Проблема с нововведениями в Java 1.6 (аннотации)
Помогите мне пожалуйста решить проблему с нововведениями в Java 1.6. Я пытаюсь реализовать аннотацию но она не работает.
Есть следующий класс (NewClassAttribute.java):
package myjavaapplication;
@interface NewClassAttribute {
String value();
}
Есть класс (NewClass.java):
package myjavaapplication;
@NewClassAttribute("NewClass")
public class NewClass
{
public NewClass()
{}
@Override
public void finalize()
{}
}
Есть класс main который делает получение аттрибута:
package myjavaapplication;
import static java.lang.System.out;
import static java.lang.System.in;
public class Main {
public static void main(String[] args) {
NewClass NC = new NewClass();
out.print(NC.getClass().getAnnotation(NewClassAttribute.class).value());
}
}
Т.е. я хочу вывести на вывод значение аттрибута "NewClass". Вроде код правильный, но он не работает так как постоянно вылетает Exception in thread "main" java.lang.NullPointerException
Вообщем NC.getClass().getAnnotation(NewClassAttribute.class) возвращает всегда null
NewClass.class.getAnnotation(NewClassAttribute.class).value() аналогично не работает.
Помогите пожалуйста, подскажите что я делаю неправильно.
PS: Также к примеру у меня аналогичные проблемы с энумерацией:
public enum NewClass
{
RED(20)
{
public NewClass next()
{
return RED;
}
}
}
Этот код просто не компилится (взят из учебника). Тогда как код:
public enum NewClass
{
RED
{
public NewClass next()
{
return RED;
}
}
}
компилится. Подскажите мне пожалуйста где есть небольшой но подробный справочник по нововведениям в сети?
Версия ОС:
Windows XP Service Pack 3
Версия JAVA (java -version):
java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing)
Среда разработки (About окно):
Product Version: NetBeans IDE 6.1 (Build 200805300101)
Java: 1.6.0; Java HotSpot(TM) Client VM 1.6.0-b105
System: Windows XP version 5.1 running on x86; Cp1251; uk_UA (nb)
Userdir: G:\Documents and Settings\artiom\.netbeans\6.1
нововведения - там же где и обычно, в гугле. http://java.sun.com/javase/6/webnotes/features.html
но тебе, по-моему надо нововведения 5-ой java. google в помощь
А у тебя в описании аннотации она не указана- следовательно, ставится в дефолтное значение CLASS. Т.е. после компиляции в байткод попадает, а вот в JVM уже не загружается.
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/RetentionPolicy.html
P.S. Да, Скорп верно заметил что это изменения в Java 5.0 Tiger.
В Шестой яве изменения на уровня языка по-моему не было - только в JDK API и JVM.