문제

Java에서 주석의 목적은 무엇입니까?나는 그것들이 주석과 실제 코드 사이 어딘가에 있다는 모호한 생각을 가지고 있습니다.런타임 시 프로그램에 영향을 줍니까?

일반적인 용도는 무엇입니까?

Java에만 고유합니까?C++에 해당하는 것이 있습니까?

도움이 되었습니까?

해결책

주석은 주로 다른 코드를 검사하는 코드에서 사용됩니다.수정하는 데 자주 사용됩니다(예:장식 또는 래핑) 기존 클래스를 런타임에 변경하여 동작을 변경합니다.다음과 같은 프레임워크 JUnit 그리고 최대 절전 모드 프레임워크를 사용하기 위해 직접 작성해야 하는 코드의 양을 최소화하려면 주석을 사용하세요.

오라클은 Java의 개념과 의미에 대한 좋은 설명 그들의 사이트에서.

다른 팁

또한 Java에만 고유합니까? C++에 해당하는 것이 있습니까?

아니요, 하지만 VB와 C#에는 속성 그것은 같은 것입니다.

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

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

/편집하다:클래스의 속성은 태그 인터페이스와 비슷합니다(예: 직렬화 가능 자바에서).그러나 .NET 코딩 지침에서는 태그 인터페이스를 사용하지 말라고 명시하고 있습니다.또한 메소드 수준이 아닌 클래스 수준에서만 작동합니다.

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

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

여기서는 @Test 주석은 JUnit에게 flatfileMissing method는 실행되어야 하는 테스트이고 예상되는 결과는 throw됩니다. IOException.따라서 테스트를 실행할 때 이 메서드가 호출되고 테스트는 성공 여부에 따라 실패하게 됩니다. IOException 던져진다.

Java에는 주석을 생성할 뿐만 아니라 이러한 주석이 소스 코드에서 작동하는 방식을 결정하는 주석 처리 도구(apt)도 있습니다.

여기 소개입니다.

주석으로 할 수 있는 멋진 작업을 보려면 다음을 확인하세요. 내 JavaBean 주석 및 주석 프로세서.

코드를 생성하고 빌드하는 동안 추가 유효성 검사를 추가하는 데 적합하며 오류 메시지 프레임워크에도 사용하고 있습니다(아직 게시되지 않았습니다. 상사에게 확인해야 합니다...).

리터럴 정의에 따라 주석은 요소에 메모를 추가합니다.마찬가지로 Java 주석은 코드에 대한 추가 정보를 제공하기 위해 소스 코드에 삽입하는 태그입니다.Java 주석은 정보를 주석이 달린 프로그램 요소와 연결합니다.Java 주석 외에도 Java 프로그램에는 일반적으로 소스 코드 파일의 주석에 포함된 비공식 문서가 많이 있습니다.그러나 Java 주석은 주석 형식을 설명하기 위해 주석 유형을 사용하여 프로그램 요소에 직접 주석을다는 주석과 다릅니다.Java Annotation은 정보를 처리 도구에서 적절하게 사용할 수 있도록 표준적이고 구조화된 방식으로 제공합니다.

자세히 읽으려면 좋은 튜토리얼이 있습니다. 자바 주석

Java의 @Override 주석은 언제 사용하며 그 이유는 무엇입니까?해당 링크는 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, CLASS, 그리고 RUNTIME

  • RetentionPolicy.SOURCE:주석은 프로그램의 소스 코드에서 사용할 수 있으며 컴파일러에서 사용할 수 있습니다. 적절한 코드 생성을 위해.
  • RetentionPolicy.CLASS:주석은 .class 파일에 있지만 런타임에는 사용할 수 없습니다.다음과 같은 바이트 코드 조작 도구에서 사용됩니다. ASM 수정을 수행하다
  • RetentionPolicy.RUNTIME:주석은 getAnnotations()를 통한 Java 리플렉션을 통한 검사를 위해 .class 파일 및 런타임에서 사용할 수 있습니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top