@interface - Что? - PullRequest
       12

@interface - Что?

5 голосов
/ 14 октября 2011

Я знаю, что такое интерфейсы, но я не знаю достаточно о Java, чтобы знать, как искать мой ответ. Итак, что это значит и делает:

public @interface ThreadSafe { }

// different file

@ThreadSafe
public class Model {

Что эта строка означает / делает "@interface"? Что это означает / делает, когда применяется выше "@ThreadSafe"

Ответы [ 2 ]

5 голосов
/ 14 октября 2011

Это называется аннотацией.Вы можете посмотреть учебник по Java.Это довольно хорошее объяснение того, что они из себя представляют и как они используются.

https://docs.oracle.com/javase/tutorial/java/annotations/index.html

2 голосов
/ 12 апреля 2017

Многие аннотации заменяют комментарии в коде.

Предположим, что группа программного обеспечения традиционно начинает тело каждого класса комментариями, предоставляющими важную информацию:

public class Generation3List extends Generation2List {
    // Author: John Doe
    // Date: 3/17/2002
    // Current revision: 6
    // Last modified: 4/12/2004
    // By: Jane Doe
    // Reviewers: Alice, Bill, Cindy  

    // class code goes here
}

Чтобы добавить эти же метаданные с помощьюаннотации, вы должны сначала определить тип аннотации.Для этого используется следующий синтаксис:

@interface ClassPreamble {
   String author();
   String date();
   int currentRevision() default 1;
   String lastModified() default "N/A";
   String lastModifiedBy() default "N/A";
   // Note use of array
   String[] reviewers();
}

Определение типа аннотации выглядит аналогично определению интерфейса, в котором ключевому интерфейсу предшествует знак at (@) (@ = AT, как в типе аннотации).Типы аннотаций - это форма интерфейса, которая будет рассмотрена в следующем уроке.На данный момент вам не нужно понимать интерфейсы.

Тело предыдущего определения аннотации содержит объявления элементов типа аннотации, которые очень похожи на методы.Обратите внимание, что они могут определять необязательные значения по умолчанию.

После того, как тип аннотации определен, вы можете использовать аннотации этого типа с заполненными значениями, например:

@ClassPreamble (
   author = "John Doe",
   date = "3/17/2002",
   currentRevision = 6,
   lastModified = "4/12/2004",
   lastModifiedBy = "Jane Doe",
   // Note array notation
   reviewers = {"Alice", "Bob", "Cindy"}
)

public class Generation3List extends Generation2List {
// class code goes here
}

Источник:https://docs.oracle.com/javase/tutorial/java/annotations/declaring.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...