java - 在java中获取实例化类型变量

标签 java generics types

我想检查泛型类的实例化类型是否具有某些属性,例如:

class Foo<T> {
  void bar () { 
    if (T instanceof Serializable)   // does not compile
      ...
  } 
}

我想知道通用信息是否在运行时完全丢失?这是否意味着没有办法完成我想做的事情?

最佳答案

And does that mean there is no way to accomplish what I would like to do?

你可以写:

class Foo<T> {
  private final Class<T> clazz;

  Foo (final Class<T> clazz) { // require creator to supply a Class<T>
    this.clazz = clazz;
    if (clazz == null) {
      throw new NullPointerException();
    }
  }

  void bar () { 
    if (Serializable.class.isAssignableFrom(clazz)) {
      ...
    }
  } 
}

关于java - 在java中获取实例化类型变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15045430/

相关文章:

scala - Scala中高级类型的类型约束

c - Angelscript错误的类型转换

SQL Server 2008 需要用SQL语句创建用户表类型create语句

java - 从没有位置的类 X 的 ArrayList 中获取类 X 的实例

java - 列出 Java/Scala 中的 Maven 依赖项

c# - 将 'using alias = class' 与泛型一起使用?

c# - 找不到命名空间名称 'p'(是否缺少 using 指令或程序集引用?)

Java 和动态类型

java - 获取 WebService 端口时的 NPE

java - 缺少属性异常