Java java지도 시간 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으로 문의하세요.

핫 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를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Dewu 사용법 튜토리얼 Dewu 사용법 튜토리얼 Mar 21, 2024 pm 01:40 PM

Dewu APP는 현재 매우 인기 있는 브랜드 쇼핑 소프트웨어이지만 대부분의 사용자는 Dewu APP의 기능을 사용하는 방법을 모릅니다. 다음으로 편집기는 Dewuduo를 사용자에게 제공합니다. 관심 있는 사용자는 와서 살펴볼 수 있습니다! Dewu 이용방법 튜토리얼 [2024-03-20] Dewu 할부구매 이용방법 [2024-03-20] Dewu 쿠폰 받는 방법 [2024-03-20] Dewu 매뉴얼 고객센터 찾는 방법 [2024-03- 20] 듀우 픽업 코드 확인 방법 [2024-03-20] 듀우 구매처 찾기 [2024-03-20] 듀우 VIP 개설 방법 [2024-03-20] 듀우 반품, 교환 신청 방법

NetEase Cloud Music을 WeChat Moments에 공유하는 방법_NetEase Cloud Music을 WeChat Moments에 공유하는 방법에 대한 튜토리얼 NetEase Cloud Music을 WeChat Moments에 공유하는 방법_NetEase Cloud Music을 WeChat Moments에 공유하는 방법에 대한 튜토리얼 Mar 25, 2024 am 11:41 AM

1. 먼저 NetEase Cloud Music에 들어간 다음 소프트웨어 홈페이지 인터페이스를 클릭하여 노래 재생 인터페이스로 들어갑니다. 2. 그런 다음 노래 재생 인터페이스에서 아래 그림의 빨간색 상자에 표시된 것처럼 오른쪽 상단에서 공유 기능 버튼을 찾아 공유 채널에서 공유 채널을 선택하고 다음 위치에서 "공유 대상" 옵션을 클릭합니다. 하단에서 첫 번째 "WeChat Moments"를 선택하면 WeChat Moments에 콘텐츠를 공유할 수 있습니다.

여름에는 꼭 무지개를 찍어보세요 여름에는 꼭 무지개를 찍어보세요 Jul 21, 2024 pm 05:16 PM

여름에 비가 내린 후에는 아름답고 마법 같은 특별한 날씨 장면인 무지개를 자주 볼 수 있습니다. 이 역시 사진에서 볼 수 있는 보기 드문 장면으로, 매우 포토제닉하다. 무지개가 나타나는 데에는 몇 가지 조건이 있습니다. 첫째, 공기 중에 충분한 물방울이 있고, 둘째, 태양이 낮은 각도로 빛납니다. 따라서 비가 그친 후 오후에 무지개를 보는 것이 가장 쉽습니다. 그러나 무지개의 형성은 날씨, 빛, 기타 조건의 영향을 크게 받기 때문에 일반적으로 짧은 시간 동안만 지속되며, 가장 잘 볼 수 있고 촬영할 수 있는 시간은 더욱 짧습니다. 그러면 무지개를 만났을 때 어떻게 제대로 기록하고 고품질로 사진을 찍을 수 있습니까? 1. 무지개를 찾아보세요. 위에서 언급한 조건 외에도 무지개는 대개 햇빛 방향으로 나타납니다. 즉, 태양이 서쪽에서 동쪽으로 빛날 경우 무지개가 동쪽에서 나타날 확률이 높습니다.

Baidu Netdisk에서 친구들과 파일을 공유하는 방법 Baidu Netdisk에서 친구들과 파일을 공유하는 방법 Mar 25, 2024 pm 06:52 PM

최근 Baidu Netdisk Android 클라이언트는 새로운 버전 8.0.0을 선보였습니다. 이 버전은 많은 변화를 가져올 뿐만 아니라 많은 실용적인 기능도 추가했습니다. 그 중 가장 눈길을 끄는 것은 폴더 공유 기능 강화다. 이제 사용자는 쉽게 친구를 초대하여 업무와 생활에서 중요한 파일을 공유하고 더욱 편리하게 협업하고 공유할 수 있습니다. 그렇다면 친구들과 공유해야 하는 파일을 어떻게 공유합니까? 아래에서 이 사이트의 편집자가 자세한 소개를 해줄 것입니다. 1) Baidu Cloud 앱을 열고 먼저 홈페이지에서 관련 폴더를 클릭한 다음 인터페이스 오른쪽 상단에 있는 [...] 아이콘을 클릭합니다(아래 참조). 2) 그런 다음에서 [+]를 클릭합니다. "공유 멤버" 열 ]을 선택하고 마지막으로 모두 확인합니다.

WeChat에서 결제 소리를 끄는 방법에 대한 튜토리얼 WeChat에서 결제 소리를 끄는 방법에 대한 튜토리얼 Mar 26, 2024 am 08:30 AM

1. 먼저 위챗을 엽니다. 2. 오른쪽 상단의 [+]를 클릭하세요. 3. QR코드를 클릭하시면 결제가 진행됩니다. 4. 오른쪽 상단에 있는 세 개의 작은 점을 클릭하세요. 5. 결제도착 음성알림을 클릭하시면 종료됩니다.

JUnit 프레임워크의 테스트 메소드에 주석은 어떻게 사용됩니까? JUnit 프레임워크의 테스트 메소드에 주석은 어떻게 사용됩니까? May 06, 2024 pm 05:33 PM

JUnit 프레임워크의 주석은 테스트 메서드를 선언하고 구성하는 데 사용됩니다. 주요 주석에는 @Test(테스트 메서드 선언), @Before(테스트 메서드가 실행되기 전에 실행되는 메서드), @After(테스트 메서드 후에 실행되는 메서드)가 포함됩니다. 실행됨), @BeforeClass(모든 테스트 메소드가 실행되기 전에 실행되는 메소드), @AfterClass(모든 테스트 메소드가 실행된 후에 실행되는 메소드) 이러한 주석은 테스트 코드를 구성하고 단순화하며 테스트 코드의 신뢰성을 향상시키는 데 도움이 됩니다. 명확한 의도와 구성을 제공하여 가독성과 유지 관리성을 제공합니다.

전문가가 가르쳐드립니다! Huawei 휴대폰에서 긴 사진을 자르는 올바른 방법 전문가가 가르쳐드립니다! Huawei 휴대폰에서 긴 사진을 자르는 올바른 방법 Mar 22, 2024 pm 12:21 PM

스마트폰의 지속적인 발전과 함께 휴대폰의 기능은 점점 더 강력해졌고, 그 중 장사진 촬영 기능은 많은 사용자들이 일상생활에서 사용하는 중요한 기능 중 하나로 자리 잡았다. 긴 스크린샷은 사용자가 쉽게 보고 공유할 수 있도록 긴 웹페이지, 대화 기록, 사진을 한 번에 저장하는 데 도움이 됩니다. 많은 휴대폰 브랜드 중에서 Huawei 휴대폰은 사용자들로부터 높은 평가를 받는 브랜드 중 하나이며, 긴 사진을 자르는 기능도 높은 평가를 받고 있습니다. 이 기사에서는 Huawei 휴대폰으로 장사진을 찍는 올바른 방법과 Huawei 휴대폰을 더 잘 활용하는 데 도움이 되는 몇 가지 전문가 팁을 소개합니다.

Jackson 라이브러리의 주석은 JSON 직렬화 및 역직렬화를 어떻게 제어합니까? Jackson 라이브러리의 주석은 JSON 직렬화 및 역직렬화를 어떻게 제어합니까? May 06, 2024 pm 10:09 PM

Jackson 라이브러리의 주석은 JSON 직렬화 및 역직렬화를 제어합니다. 직렬화: @JsonIgnore: 속성 무시 @JsonProperty: 이름 지정 @JsonGetter: get 메서드 사용 @JsonSetter: set 메서드 사용 역직렬화: @JsonIgnoreProperties: @JsonProperty 속성 무시: 이름 지정 @JsonCreator: 생성자 사용 @JsonDeserialize: 사용자 정의 논리

See all articles