Сегодня я создал приложение Hello World.
Это не простое приложение Hello World. заключается в том, что класс AnnotationApplyer, который проверяет, хорошо ли применяются аннотации, ничего не делает. Lang.Exception Class).
Это не работает, я ошибся при проверке или что -то еще? < /p>
import java.lang.annotation.*;
@UserException // wrong placed annotation for testing
@UserDefined(user = "iasonas")
public abstract class Main {
public static void main(String[] args) {
// check annotations
AnnotationApplyer.check();
// start the program
new Greeter().greet();
}
@UserDefined(user = "iasonas")
private static class Greeter {
private final String MSG = "Hello, World!";
private Printer ms = new MessageService(MSG);
public Greeter () {
}
public void greet () {
try {
ms.print();
} catch (InvalidMessageException e) {
System.out.println("Cannot greet. "+e.toString());
}
}
};
};
@UserException // wrong placed annotation for testing
@UserDefined(user = "iasonas")
class AnnotationApplyer {
public static void check () {
checkUserException(Main.class, AnnotationApplyer.class, MessageService.class, UserDefined.class);
checkUserException(UserException.class, Printer.class, InvalidMessageException.class);
}
public static void checkUserException (Class... classes) {
for (Class clazz : classes) {
if (!clazz.isAnnotationPresent(UserException.class)) {
continue;
}
if (!Exception.class.isAssignableFrom(clazz)) {
System.out.println("Error: "+clazz.getName()+" does not extend java.lang.Exception");
} else {
System.out.println("Class "+clazz.getName()+" extends java.lang.Exception!");
}
}
}
}
@Target(ElementType.TYPE)
@interface UserException {
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@interface UserDefined {
String user() default "Not specified";
}
class MessageService implements Runnable, Printer {
private T message;
private final Thread thread = new Thread(this);
private int printCounter;
public MessageService () {
}
public MessageService (T message) {
this.message = message;
}
public T getMessage () {
return message;
}
public void setMessage (T aMsg) {
this.message = aMsg;
}
public int getTimes () {
return printCounter;
}
@Override
public void run () {
System.out.println(message);
printCounter++;
}
@Override
public synchronized void print () throws InvalidMessageException {
if (message==null) {
throw new InvalidMessageException("message is null");
}
thread.start();
}
};
interface Printer {
void print() throws InvalidMessageException;
};
@UserException // well placed annotation for checking
class InvalidMessageException extends Exception {
public InvalidMessageException (String m) {
super(m);
System.exit(0);
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... annotation
Как проверить пользовательскую аннотацию? ⇐ JAVA
Программисты JAVA общаются здесь
1738170228
Anonymous
Сегодня я создал приложение Hello World.
Это не простое приложение Hello World. заключается в том, что класс AnnotationApplyer, который проверяет, хорошо ли применяются аннотации, ничего не делает. Lang.Exception Class).
Это не работает, я ошибся при проверке или что -то еще? < /p>
import java.lang.annotation.*;
@UserException // wrong placed annotation for testing
@UserDefined(user = "iasonas")
public abstract class Main {
public static void main(String[] args) {
// check annotations
AnnotationApplyer.check();
// start the program
new Greeter().greet();
}
@UserDefined(user = "iasonas")
private static class Greeter {
private final String MSG = "Hello, World!";
private Printer ms = new MessageService(MSG);
public Greeter () {
}
public void greet () {
try {
ms.print();
} catch (InvalidMessageException e) {
System.out.println("Cannot greet. "+e.toString());
}
}
};
};
@UserException // wrong placed annotation for testing
@UserDefined(user = "iasonas")
class AnnotationApplyer {
public static void check () {
checkUserException(Main.class, AnnotationApplyer.class, MessageService.class, UserDefined.class);
checkUserException(UserException.class, Printer.class, InvalidMessageException.class);
}
public static void checkUserException (Class... classes) {
for (Class clazz : classes) {
if (!clazz.isAnnotationPresent(UserException.class)) {
continue;
}
if (!Exception.class.isAssignableFrom(clazz)) {
System.out.println("Error: "+clazz.getName()+" does not extend java.lang.Exception");
} else {
System.out.println("Class "+clazz.getName()+" extends java.lang.Exception!");
}
}
}
}
@Target(ElementType.TYPE)
@interface UserException {
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@interface UserDefined {
String user() default "Not specified";
}
class MessageService implements Runnable, Printer {
private T message;
private final Thread thread = new Thread(this);
private int printCounter;
public MessageService () {
}
public MessageService (T message) {
this.message = message;
}
public T getMessage () {
return message;
}
public void setMessage (T aMsg) {
this.message = aMsg;
}
public int getTimes () {
return printCounter;
}
@Override
public void run () {
System.out.println(message);
printCounter++;
}
@Override
public synchronized void print () throws InvalidMessageException {
if (message==null) {
throw new InvalidMessageException("message is null");
}
thread.start();
}
};
interface Printer {
void print() throws InvalidMessageException;
};
@UserException // well placed annotation for checking
class InvalidMessageException extends Exception {
public InvalidMessageException (String m) {
super(m);
System.exit(0);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79397531/how-do-i-check-a-custom-annotation[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия