0

如何编写一个方法来接受注解类型,但实际上没有方法可以使用注解类型来传递它?

@Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface Sharpenable {}


@Sharpenable
public class Pencil {}


public void sharpen(Sharpenable sharpenable){
       System.out.println("sharpening a " + sharpenable.getClass().getSimpleName());
}
4

1 回答 1

0

您可以拥有注释的实例。对于您的示例,它将是

 Sharpenable s = Pencil.class.getAnnotation(Sharpenable.class); 

但是,Annotations 是反射代码中使用的实体。对于您的示例,像这样创建它并没有什么意义。Sharpenable应该是由可以锐化的不同其他类实现的接口。如果你想保持注释它们的风格,你的代码可能看起来像这样:

 public void sharpen(Object sharpenable){
     if (sharpenable.getClass.getAnnotation(Sharpenable.class) != null)
         System.out.println("sharpening a " + sharpenable.getClass().getSimpleName());
     else
         throw new IllegalArgumentException("Not a sharpenable.");
 }
于 2012-12-14T14:29:45.453 回答