Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java泛型类_Java_Generics - Fatal编程技术网

Java泛型类

Java泛型类,java,generics,Java,Generics,我们有一个注解@Accepts: @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Accepts { Class[] value(); } 它需要一个类列表。这些之后用于在DSL中验证字段是否传递了列出为可接受的类的实例 正在使用的此注释的一些示例: public enum PropertyName { @Accepts({Integer.class}) xCoor

我们有一个注解@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*/
}
我正在向该枚举添加一个名为“value”的新项,它可以接受字符串或PropertyResolver。PropertyResolver是一个定义如下的接口:

public interface PropertyResolver<T> {
    public T getValue(TagContext tagContext);
}
公共接口属性Resolver{
公共T getValue(TagContext-TagContext);
}
我不知道如何对PropertyResolver执行.class来传递给@Accepts。有可能吗


谢谢。

您必须执行
属性Resolver.class
。只有一个
Class
实例表示类(原始版本)

不存在诸如
PropertyResolver.class
PropertyResolver.class
之类的东西


请始终记住,在Java中,泛型是编译时唯一的功能。

您必须执行
PropertyResolver.class
。只有一个
Class
实例表示类(原始版本)

不存在诸如
PropertyResolver.class
PropertyResolver.class
之类的东西


请始终记住,在Java中,泛型是编译时唯一的功能。

@JakubJirutka Wait,真的吗?什么时候泛型不被擦除?嗯,我发现动态类型被擦除了,而静态类型没有。这就是你说的吗?@JakubJirutka啊,这很有趣。谢谢你的信息!今天学到了新东西。@JakubJirutka等等,真的吗?什么时候泛型不被擦除?嗯,我发现动态类型被擦除了,而静态类型没有。这就是你说的吗?@JakubJirutka啊,这很有趣。谢谢你的信息!今天学到了一些新东西。