IT박스

자바 주석

itboxs 2020. 8. 2. 17:52
반응형

자바 주석


Java에서 주석의 목적은 무엇입니까? 주석과 실제 코드 사이의 어딘가에 대한이 퍼지 아이디어가 있습니다. 런타임시 프로그램에 영향을 줍니까?

그들의 일반적인 사용법은 무엇입니까?

그것들은 Java에 고유합니까? C ++에 상응하는 것이 있습니까?


주석은 주로 다른 코드를 검사하는 코드에서 사용됩니다. 기존 클래스를 런타임에 수정 (예 : 꾸미기 또는 줄 바꿈)하여 동작을 변경하는 데 종종 사용됩니다. JUnitHibernate 와 같은 프레임 워크 는 주석을 사용하여 프레임 워크를 사용하기 위해 직접 작성해야하는 코드의 양을 최소화합니다.

오라클은 사이트 에서 Java의 개념과 의미에 대해 잘 설명 하고 있습니다.


또한 Java에 고유합니까? C ++과 동등한 것이 있습니까?

아니요, 그러나 VB와 C #에는 동일한 속성 이 있습니다.

그들의 사용은 매우 다양합니다. 일반적인 Java 예제 중 하나 @Override는 코드에 영향을 미치지 않지만 장식 된 메서드가 실제로 다른 메서드를 재정의하지 않으면 컴파일러에서 경고 (또는 오류)를 생성하는 데 사용할 수 있습니다. 마찬가지로, 메소드는 더 이상 사용되지 않는 것으로 표시 될 수 있습니다.

그런 다음 반성이 있습니다. 코드에 클래스 유형을 반영하면 속성에 액세스하고 해당 정보에 따라 조치를 취할 수 있습니다. Java의 예제는 모르지만 .NET에서는 컴파일러가 클래스의 직렬화 정보 를 생성 하고 구조 메모리 레이아웃결정하며 레거시 라이브러리에서 함수 가져 오기선언하는 데 사용됩니다 . 또한 IDE 양식 디자이너의 작동 방식을 제어합니다.

/ EDIT : 클래스의 속성은 태그 인터페이스 (예 : Java의 Serializable ) 와 비슷합니다 . 그러나 .NET 코딩 지침에서는 태그 인터페이스를 사용하지 말 것을 요구합니다. 또한 메소드 수준이 아닌 클래스 수준에서만 작동합니다.


Anders는 좋은 요약을 제공하며 다음은 JUnit 주석의 예입니다.

@Test(expected=IOException.class)
public void flatfileMissing() throws IOException {
    readFlatFile("testfiles"+separator+"flatfile_doesnotexist.dat");
}

여기서 @Test주석은 JUnit에 flatfileMissing메소드가 실행되어야하는 테스트이고 예상 된 결과가 발생했음을 알려줍니다 IOException. 따라서 테스트를 실행할 때이 메소드가 호출되고 테스트 IOException가 발생 했는지에 따라 테스트가 통과하거나 실패합니다 .


Java에는 주석을 작성할뿐만 아니라 이러한 주석이 소스 코드에서 어떻게 작동하는지 결정하는 Annotation Processing Tool (apt)도 있습니다.

여기 소개가 있습니다.


Annotations로 할 수있는 멋진 작업을 보려면 JavaBean 어노테이션 및 어노테이션 프로세서를 확인하십시오 .

코드를 생성하고 빌드 중에 추가 유효성 검사를 추가하는 데 유용하며 오류 메시지 프레임 워크 (아직 게시하지 않았지만 보스와 함께 정리해야 함)에도 사용했습니다.


리터럴 정의에 의해 주석은 요소에 메모를 추가합니다. 마찬가지로 Java 주석은 코드에 대한 자세한 정보를 제공하기 위해 소스 코드에 삽입하는 태그입니다. Java 어노테이션은 정보를 주석이 달린 프로그램 요소와 연관시킵니다. Java 주석 외에 Java 프로그램에는 일반적으로 소스 코드 파일의 주석 내에 포함되어있는 많은 양의 비공식 문서가 있습니다. 그러나 Java 어노테이션은 어노테이션 유형을 사용하여 프로그램 양식에 직접 어노테이션을 작성하여 어노테이션의 양식을 설명합니다. Java 어노테이션은 정보를 처리 도구에서 사용할 수 있도록 표준적이고 체계적인 방식으로 정보를 표시합니다.

자세히 읽으려면 Java Annotations 에 대한 유용한 자습서가 있습니다.


언제 Java의 @Override 어노테이션을 사용합니까? 링크는 언제 재정의 주석 (@override)을 사용해야하는지에 대한 질문을 나타냅니다. 주석의 개념을 더 잘 이해하는 데 도움이 될 수 있습니다.


EJB에 관한 주석은 명시 적 미들웨어 접근법보다 암시 적 미들웨어 접근법을 선택하는 것으로 알려져 있습니다. 주석을 사용할 때 API에서 정확히 필요한 것을 사용자 정의하는 것입니다. 예를 들어 은행 송금을 위해 거래 방법을 호출해야합니다 : 주석을 사용하지 않고 : 코드는

transfer(Account account1, Account account2, long amount)    
{
   // 1: Call middleware API to perform a security check
   // 2: Call middleware API to start a transaction
   // 3: Call middleware API to load rows from the database
   // 4: Subtract the balance from one account, add to the other
   // 5: Call middleware API to store rows in the database
   // 6: Call middleware API to end the transaction
}

주석을 사용하는 동안 코드에는 미들웨어 서비스를 사용하기위한 번거로운 API 호출이 포함되어 있지 않습니다. 코드는 깨끗하고 비즈니스 로직에 중점을 둡니다.

transfer(Account account1, Account account2, long amount) 
{
   // 1: Subtract the balance from one account, add to the other
}

메타 데이터의 형태 인 주석은 프로그램 자체의 일부가 아닌 프로그램에 대한 데이터를 제공합니다. 주석은 주석이 달린 코드의 작동에 직접적인 영향을 미치지 않습니다.

주석은 여러 가지 용도로 사용됩니다.

  • 컴파일러에 대한 정보컴파일러는 주석을 사용하여 오류를 감지하거나 경고를 억제 할 수 있습니다.
  • 컴파일 시간 및 배포 시간 처리 — 소프트웨어 도구는 주석 정보를 처리하여 코드, XML 파일 등을 생성 할 수 있습니다.
  • 런타임 처리 — 일부 주석은 런타임에 검사 할 수 있습니다.

가시 범위에 의해 정의 된 java.lang.annotation.RetentionPolicy상수 SOURCE, CLASSRUNTIME

  • RetentionPolicy.SOURCE: The annotation would be available in the source code of the program and can be used by the compiler or apt for code generation.
  • RetentionPolicy.CLASS: The annotation would be in the .class file but it would not be available at runtime. Used by byte code manipulation tools such as ASM perform the modifications
  • RetentionPolicy.RUNTIME: The annotation would be available at .class file and runtime, for inspection via java reflection via getAnnotations().

참고URL : https://stackoverflow.com/questions/24221/java-annotations

반응형