Обзор комментариев Java:
1. Аннотация для компилятора, который отличается от аннотаций
2. Три основных аннотации:
@Override сообщает компилятору, что это переоценивает метод
@Deprecated сообщите компилятору, что метод устарел
@Suppresswarnings («не контролировано»), не предупреждайте
= (value = {"unchecked"})
3. Аннотации могут использоваться для замены традиционных файлов конфигурации
4. Начиная с JDK5, Java добавила поддержку метаданных (метаданных), а именно аннотации.
Пользовательские аннотации и аннотации рефлексии
Пользовательские аннотации:
1. Создайте новую аннотацию: (только один @ символ, чем определение интерфейса)
Кода -копия выглядит следующим образом:
public @Interface myannotation {
//свойство
Строка Кто ();
int age ();
String Gender ();
}
2. Установите аннотацию со значениями по умолчанию
Кода -копия выглядит следующим образом:
public @Interface YouAnnotation {
String Who () по умолчанию "Tom";
int age () по умолчанию 0;
String Gender () по умолчанию "Женщина";
}
3. Стоимость массива
Кода -копия выглядит следующим образом:
public @Interface theannotation {
String [] value ();
}
Метанотация / метааннотация
Используется для изменения аннотации. (Вы можете просмотреть исходный код @Override)
Политика аннотаций @retention, используемая для указания доменов, которые аннотация может сохранить
Hardentionpolicy.class
На уровне байт -кода, но не видны на уровне пробега (по умолчанию)
Harementpolicy.runtime
Все три уровня видны и могут быть отражены во время выполнения
Harementpolicy.source доступен только на уровне исходного кода и не виден на уровне байт -кода.
@Target указывает область использования аннотации
@Documented написать в документ.
@Уточненная наследственность, подклассы, наследующие этот класс, по -прежнему имеют характеристики родительского класса в качестве аннотации.
Аннотация.
Аннотации определения следующие:
Кода -копия выглядит следующим образом:
// Пусть аннотация будет отражена во время выполнения
@Retention (handentpolicy.runtime)
public @Interface dbinfo {
String Driver () по умолчанию "com.mysql.jdbc.driver";
String url () по умолчанию "url = jdbc: mysql: // localhost: 3306/Academic";
String password () по умолчанию "1234";
String username () по умолчанию "root";
}
Инъекция отражения:
Кода -копия выглядит следующим образом:
@Dbinfo
public Static Connection getConnection () бросает исключение {
// Получить байт -код этого класса
Класс clazz = demo2.class;
// Получить публичный метод с именем getConnection () в этом классе
// Параметр 1: Имя метода
// Параметр 2: объект Bytecode, соответствующий параметру типа метода
Method Method = clazz.getMethod ("GetConnection", NULL);
// через этот метод получите аннотацию, определенную на методе
Dbinfo dbinfo = method.getannotation (dbinfo.class);
String Driver = dbinfo.driver ();
String url = dbinfo.url ();
String user = dbinfo.username ();
String password = dbinfo.password ();
Class.forname (драйвер);
return Drivermanager.getConnection (URL, пользователь, пароль);
}