이 글에서는 주로 Kotlin의 Annotation 클래스 세부 사항 및 예제에 대한 관련 정보를 소개합니다. 필요한 친구는
Kotlin의 Annotation 클래스 세부 사항 및 예제
Annotation 문
Annotation은 코드 메서드에 메타데이터를 추가하는 것입니다. 주석을 선언하려면 클래스 앞에 주석 수정자를 배치합니다.
annotation class Fancy
주석의 추가 속성은 주석 클래스에 메타 주석을 추가하여 지정할 수 있습니다.
@Target은 다음과 같은 요소를 지정합니다. 이 주석으로 주석을 달 수 있습니다. 가능한 유형(클래스, 함수, 속성, expression 등)
@Retention은 주석이 컴파일된 클래스 파일에 저장되는지 여부와 리플렉션을 통해 표시될 수 있는지 여부를 지정합니다. 런타임(기본값은 둘 다 true)
@Repeatable을 사용하면 단일 요소에서 동일한 주석을 여러 번 사용할 수 있습니다.
@MustBeDocumented는 주석이 공개 API의 일부임을 지정합니다. 에 표시된 클래스 또는 메서드의 서명에 생성된 API 문서에 포함되어야 합니다.
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION,
AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)
@Retention(AnnotationRetention.SOURCE )
@MustBeDocumented
주석 수업 Fancy
Usage
@Fancy class Foo { @Fancy fun baz(@Fancy foo: Int): Int { return (@Fancy 1) } }
클래스의 기본 constructor에 주석을 달아야 하는 경우 생성자 선언에 생성자 키워드를 추가하고 그 앞에 주석을 추가해야 합니다.
class Foo @Inject constructor(dependency: MyDependency) { // …… }
속성 접근자에 주석을 달 수도 있습니다:
class Foo { var x: MyDependency? = null @Inject set }
Constructor
주석에는 매개변수를 허용하는 생성자가 있을 수 있습니다.
annotation class Special(val why: String) @Special("example") class Foo {}re는 다음과 같습니다. class);
열거형;
- 위에 나열된 유형의 배열.
JVM은 주석 속성 값으로 null 저장을 지원하지 않으므로 주석 매개변수는 null 허용 유형을 가질 수 없습니다. 주석이 다른 주석의 매개변수로 사용되는 경우 이름 앞에 @ 문자가 붙지 않습니다.
annotation class ReplaceWith(val expression: String) annotation class Deprecated( val message: String, val replaceWith: ReplaceWith = ReplaceWith("")) @Deprecated("This function is deprecated, use === instead", ReplaceWith("this === other"))
클래스를 주석의 매개변수로 지정해야 하는 경우 Kotlin 클래스(KClass)를 사용하세요. ). Kotlin 컴파일러는 Java 코드가 주석과 매개변수를 정상적으로 볼 수 있도록 자동으로 이를 Java 클래스로 변환합니다.import kotlin.reflect.KClass annotation class Ann(val arg1: KClass<*>, val arg2: KClass<out Any?>) @Ann(String::class, Int::class) class MyClass
람다 표현식주석은 람다 표현식에도 사용할 수 있습니다. 이는 람다 식 본문을 생성하는 호출() 메서드에 적용됩니다. 이는 동시성 제어를 위해 주석을 사용하는 Quasar와 같은 프레임워크에 유용합니다.
-
annotation class Suspendable val f = @Suspendable { Fiber.sleep(10) }
주석 사용 대상
속성 또는 기본 생성자
함수 매개변수에 주석을 추가할 때 해당 Kotlin 요소에서 생성된 여러 Java 요소가 있으므로 생성된 Java 바이트코드에는 이에 대한 가능한 위치가 여러 개 있습니다. 에 주석을 추가합니다. 주석 생성 방법을 정확하게 지정하려면 다음 구문을 사용하십시오.
class Example(@field:Ann val foo, // 标注 Java 字段 @get:Ann val bar, // 标注 Java getter @param:Ann val quux) // 标注 Java 构造函数参数동일한 구문을 사용하여 전체 파일에 주석을 달 수 있습니다. 이렇게 하려면 패키지 지시문 앞이나 모든 가져오기(파일이 기본 패키지에 있는 경우) 앞에 파일의 최상위 수준에 대상 파일이 있는 주석을 배치합니다.
@file:JvmName("Foo") package org.jetbrains.demo동일한 대상 주석을 사용하는 경우 대상 뒤에 대괄호를 추가하고 모든 주석을 대괄호 안에 배치하여 대상 중복을 피할 수 있습니다.
class Example { @set:[Inject VisibleForTesting] var collaborator: Collaborator }
지원되는 사용 대상의 전체 목록은 다음과 같습니다.
file
property (이 대상이 있는 주석은 Java에 표시되지 않습니다.)
field
set(속성 설정자)
- param(생성자 매개변수)
- setparam(속성 설정자 매개변수)
- delegate(대리자 속성에 대한 위임 인스턴스를 저장하는 필드)
확장 함수 또는 매개변수의 수신을 표시합니다. , 다음 구문을 사용하십시오.
-
fun @receiver:Fancy String.myExtension() { }
대상을 지정하지 않으면 사용 중인 주석의 @Target 주석을 기반으로 대상이 선택됩니다. 적용 가능한 대상이 여러 개인 경우 다음 목록에서 첫 번째 적용 가능한 대상이 사용됩니다.
param
property
field
Java 注解
Java 注解与 Kotlin 100% 兼容:
import org.junit.Test import org.junit.Assert.* import org.junit.Rule import org.junit.rules.* class Tests { // 将 @Rule 注解应用于属性 getter @get:Rule val tempFolder = TemporaryFolder() @Test fun simple() { val f = tempFolder.newFile() assertEquals(42, getTheAnswer()) } }
因为 Java 编写的注解没有定义参数顺序,所以不能使用常规函数调用 语法来传递参数。相反,你需要使用命名参数语法。
// Java public @interface Ann { int intValue(); String stringValue(); } // Kotlin @Ann(intValue = 1, stringValue = "abc") class C
就像在 Java 中一样,一个特殊的情况是 value 参数;它的值无需显式名称指定。
// Java public @interface AnnWithValue { String value(); } // Kotlin @AnnWithValue("abc") class C
如果 Java 中的 value 参数具有数组类型,它会成为 Kotlin 中的一个 vararg 参数:
// Java public @interface AnnWithArrayValue { String[] value(); } // Kotlin @AnnWithArrayValue("abc", "foo", "bar") class C
对于具有数组类型的其他参数,你需要显式使用 arrayOf:
// Java public @interface AnnWithArrayMethod { String[] names(); } // Kotlin @AnnWithArrayMethod(names = arrayOf("abc", "foo", "bar")) class C
注解实例的值会作为属性暴露给 Kotlin 代码。
// Java public @interface Ann { int value(); } // Kotlin fun foo(ann: Ann) { val i = ann.value }
위 내용은 Kotlin 주석 클래스 예시 튜토리얼 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

使用Vue.js和Kotlin语言开发安卓应用的一些技巧随着移动应用的普及和用户需求的不断增长,安卓应用的开发越来越受到开发者的关注。在开发安卓应用时,选择合适的技术栈至关重要。近年来,Vue.js和Kotlin语言逐渐成为安卓应用开发的热门选择。本文将介绍使用Vue.js和Kotlin语言开发安卓应用的一些技巧,并给出相应的代码示例。一、搭建开发环境在开始

Kotlin是一种静态类型编程语言,已经在软件开发领域引起了巨大的关注。它简洁易懂的语法、与Java的良好兼容性以及丰富的工具支持,为开发人员提供了许多优势,因此许多开发者都选择Kotlin作为他们的首选语言。在Debian上安装Kotlin编程语言12Bookworm步骤1。首先更新现有系统包。打开终端并输入以下命令:sudoaptupdatesudoaptupgrade这些命令将获取可用更新列表并升级当前程序包,从而确保您的系统是最新的。第2步。安装Java。Kotlin在Java虚拟机(J

win7企业版激活密钥有没有最新的?如果你安装的是官方win7企业版,会提示用windows7企业版产品密钥来激活,否则不能正常使用。所以小编接下来跟大家分享一些win7企业版激活密码,大家一起来看看吧。Q3VMJ-TMJ3M-99RF9-CVPJ3-Q7VF3KGMPT-GQ6XF-DM3VM-HW6PR-DX9G8MT39G-9HYXX-J3V3Q-RPXJB-RQ6D79JBBV-7Q7P7-CTDB7-KYBKG-X8HHCP72QK-2Y3B8-YDHDV-29DQB-QKWWM6JQ

win7系统如何分享wifi热点?我们电脑在连接了网络之后,也是可以进行无线网络的分享的。很多用户想要将自己电脑的网络分享到手机上来使用。很多小伙伴不知道怎么详细操作,小编下面整理了win7系统如何分享wifi热点的操作方法步骤,如果你感兴趣的话,跟着小编一起往下看看吧! win7系统如何分享wifi热点的操作方法步骤 1、要想开启wifi热点,首先得要有无线网卡,笔记本是有自带的,pc的话可以购买一个随身wifi来分享wifi,这里就不叙述了。首先按下键盘上的windows键打开开始菜

如何利用Redis和Kotlin开发异步任务队列功能引言:随着互联网的发展,异步任务的处理变得越来越重要。在开发过程中,经常会遇到一些需要耗时的任务,例如发送邮件、处理大数据等等。为了提高系统的性能和可伸缩性,我们可以使用异步任务队列来处理这些任务。本文将介绍如何利用Redis和Kotlin来开发一个简单的异步任务队列,并提供具体的代码示例。一、什么是异步任

Java和Kotlin函数的区别:语法:Java函数需要明确参数类型和名称,而Kotlin可以省略类型并使用lambda表达式;参数:Kotlin可以使用更简洁的语法省略参数类型;返回值:Kotlin可以省略返回值类型,默认为Unit;扩展函数:Kotlin可以为现有类添加新函数,而Java需要通过继承实现类似功能;实例方法调用:Kotlin可以省略对象名,使用更简洁的语法。

我们都知道windows7系统需要用激活系统之后才能正常使用windows7的各项功能,激活系统我们一般有两种方法一种是使用官方发布的激活码激活,一种是使用网上的激活工具来激活,很多小伙伴都不知道windows7旗舰版激活码使用方法。下面跟小编一起来看看吧。 windows7旗舰版激活码 神key KH2J9-PC326-T44D4-39H6V-TVPBY TFP9Y-VCY3P-VVH3T-8XXCC-MF4YK 236TW-X778T-8MV9F-937GT-QVKBB 87

与Go接近的编程语言有哪些?近年来,Go语言在软件开发领域逐渐崭露头角,受到越来越多开发者的青睐。虽然Go语言本身拥有简洁、高效和并发性强的特点,但有时候也会遇到一些限制和不足。因此,寻找与Go语言接近的编程语言成为了一种需求。下面将介绍一些与Go语言接近的编程语言,并通过具体代码示例展示它们的相似之处。RustRust是一种系统编程语言,注重安全性和并发性


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기
