Я хочу знать, возможно ли создать аннотацию Java, которая обеспечивает конкретный тип возврата? - PullRequest
0 голосов
/ 17 августа 2010

Я хочу знать, возможно ли создать Annotation, обеспечивающий конкретный тип возвращаемого значения?

То, что я хотел бы, - это способ создания Annotation и использовать его как*

@MarkerAnnotationForcingStringReturnType
public String someWebflowMethod(...){
    ...
    return "someString";
}

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

Ответы [ 3 ]

7 голосов
/ 17 августа 2010

Не поддерживает ли сама сигнатура метода определенный тип возвращаемого значения?

4 голосов
/ 17 августа 2010

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

Я не знаю ни одного встроенного ... и, честно говоря, я не уверен, что вижу смысл. Если вы собираетесь быть достаточно бдительными, чтобы написать аннотацию, почему бы вам не быть достаточно бдительными, чтобы правильно определить тип возвращаемого метода? При каких обстоятельствах вы могли бы получить правильную аннотацию, но неправильный метод?

0 голосов
/ 17 августа 2010

Сами по себе аннотации - это просто метаданные, то есть «комментарии», которые прикреплены к битам кода и включены в сам байт-код (возможно).

Вы можете написать процессор, используя apt , который подтвердит это во время компиляции, если вы действительно захотите.

Но я считаю, что объявление метода, возвращающего String, является таким же надежным и более простым для понимания обычным Java-разработчиком. У вас действительно есть веская причина для этого? Если вы беспокоитесь о том, что кто-то может изменить тип возврата, он может также легко удалить вашу аннотацию. Если вы хотите запретить кому-либо вносить эти изменения, комментарий, вероятно, будет более эффективным, чем аннотация, которую они могут удалить за «лишнюю» (эй, мы говорим о разработчиках, которых вы ожидаете аннулировать базовые требования здесь из-за некомпетентности / неосведомленности ...).

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