繁体   English   中英

对Java类的属性使用泛型

[英]Using Generics for attribute of Java Class

我有一个类的属性的类型是泛型的要求,将决定运行时。 因此我想出了下面的类定义

public class Generics<T> {

    T t1;

    public void put(T t2){
        t1 = t2;
    }

}

在创建对象之前,我知道类型。 因此,我想知道如何实例化。 我尝试了以下操作,但它给出了编译错误。 正确的方法到底是什么?

Object obj = getObjFromFactory() // obj can be type say A.class or B.class. I wish to get the class of obj and pass it to Generics

Generics<obj.class> generics = new Generics<obj.class>();
Generics<Sample> generics = new Generics<>();

请参阅: Oracle Java教程-泛型

由于直到运行时才知道类型,因此无法显式命名,但是可以使用类型参数来绑定不同代码段的类型,无论什么类型,您都可以确保引用同一类型:

private <T> void myRutine(final Factory<T> factory) {
   // ...
   final T obj = factory.getObj();
   // ...
   final Generics<T> generics = new Generics<>();
   // ...
   generics.put(obj);
   // ...
}

在上面的代码中你委托调用代码,以确定T它可以。 如果不能,它可能只是使用?

Factory<?> f = codeToCreateFactory();
myRutine(f);

您可以像使用集合一样进行操作

不像这样:

List<Integer.class> myVarList = ...;

List<Integer> myVarList = ...;

所以你的情况

 Generics<Sample> generics = new Generics<>();

或用于较旧的Java版本

 Generics<Sample> generics = new Generics<Sample>();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM