我们有一个注释@Accepts:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Accepts {
Class[] value();
}
它需要一个类列表。这些后来用于在DSL中验证是否已将字段传递给列出为可接受的类的实例。
使用此注释的一些示例:
public enum PropertyName {
@Accepts({Integer.class})
xCoordinate,
@Accepts({Integer.class})
yCoordinate,
@Accepts({Boolean.class})
showPermission
@Accepts({String.class, FieldScript.class, List.class})
onClick
/* And So On*/
}
我向此枚举添加了一个名为“值”的新项目,它可以接受String或PropertyResolver。PropertyResolver是一个定义如下的接口:
public interface PropertyResolver<T> {
public T getValue(TagContext tagContext);
}
我不知道如何在PropertyResolver上执行.class以传递给@Accepts。有可能这样做吗?
谢谢。
您将不得不做PropertyResolver.class
。只有一个Class
实例可以代表该类(原始版本)。
没有PropertyResolver<T>.class
或不PropertyResolver<Integer>.class
存在这样的东西。
始终要记住,在Java中,泛型仅是编译时功能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句