찾다
Javajava지도 시간Kotlin 주석 클래스 예시 튜토리얼 공유
Kotlin 주석 클래스 예시 튜토리얼 공유Jun 17, 2017 am 11:54 AM
kotlin공유하다지도 시간주석

이 글에서는 주로 Kotlin의 Annotation 클래스 세부 사항 및 예제에 대한 관련 정보를 소개합니다. 필요한 친구는

Kotlin의 Annotation 클래스 세부 사항 및 예제

Annotation 문

Annotation은 코드 메서드에 메타데이터를 추가하는 것입니다. 주석을 선언하려면 클래스 앞에 주석 수정자를 배치합니다.


annotation class Fancy

주석의 추가 속성은 주석 클래스에 메타 주석을 추가하여 지정할 수 있습니다.

  1. @Target은 다음과 같은 요소를 지정합니다. 이 주석으로 주석을 달 수 있습니다. 가능한 유형(클래스, 함수, 속성, expression 등)

  2. @Retention은 주석이 컴파일된 클래스 파일에 저장되는지 여부와 리플렉션을 통해 표시될 수 있는지 여부를 지정합니다. 런타임(기본값은 둘 다 true)

  3. @Repeatable을 사용하면 단일 요소에서 동일한 주석을 여러 번 사용할 수 있습니다.

  4. @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

);


열거형;

  1. 위에 나열된 유형의 배열.

  2. JVM은 주석 속성 값으로 null 저장을 지원하지 않으므로 주석 매개변수는 null 허용 유형을 가질 수 없습니다. 주석이 다른 주석의 매개변수로 사용되는 경우 이름 앞에 @ 문자가 붙지 않습니다.

  3. 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 클래스로 변환합니다.

  4. import kotlin.reflect.KClass
    
    annotation class Ann(val arg1: KClass<*>, val arg2: KClass<out Any?>)
    
    @Ann(String::class, Int::class) class MyClass

    람다 표현식
  5. 주석은 람다 표현식에도 사용할 수 있습니다. 이는 람다 식 본문을 생성하는 호출() 메서드에 적용됩니다. 이는 동시성 제어를 위해 주석을 사용하는 Quasar와 같은 프레임워크에 유용합니다.

  6. 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

get(속성 getter)


set(속성 설정자)


receiver(확장 함수나 속성 또는 매개변수의 수신자)

  1. param(생성자 매개변수)

  2. setparam(속성 설정자 매개변수)

  3. delegate(대리자 속성에 대한 위임 인스턴스를 저장하는 필드)

  4. 확장 함수 또는 매개변수의 수신을 표시합니다. , 다음 구문을 사용하십시오.

  5. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
使用Vue.js和Kotlin语言开发安卓应用的一些技巧使用Vue.js和Kotlin语言开发安卓应用的一些技巧Jul 31, 2023 pm 02:17 PM

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

如何在 Debian 上安装 Kotlin 编程语言 12如何在 Debian 上安装 Kotlin 编程语言 12Feb 20, 2024 am 09:42 AM

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

win7企业版激活密钥有哪些的分享win7企业版激活密钥有哪些的分享Jul 09, 2023 pm 03:01 PM

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热点Jul 01, 2023 pm 01:53 PM

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

如何利用Redis和Kotlin开发异步任务队列功能如何利用Redis和Kotlin开发异步任务队列功能Sep 21, 2023 am 10:58 AM

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

Java函数与Kotlin语言函数的区别?Java函数与Kotlin语言函数的区别?Apr 24, 2024 am 08:24 AM

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

windows7旗舰版激活码分享windows7旗舰版激活码分享Jul 15, 2023 am 11:25 AM

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

与Go接近的编程语言有哪些?与Go接近的编程语言有哪些?Mar 23, 2024 pm 02:03 PM

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

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

뜨거운 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기