类型T中的字段



我想从类型为t的对象中获取所有字段及其值,比如我有:

public class Start {
    public void startMethod(){
        Main<GenericType> main = new Main<>();
        main.work(new GenericType());
    }
}

然后是Main类,我想要GenericType的字段:

public class Main<T> {
    public void work(T t){
        // Is there a way to get t's fields and values?
    }
}

首先需要得到T中的Class,然后通过反射得到所有字段

abstract class A<T> {  
    Class<T> clazz;  
    void doGetClass() {  
        Type genType = this.getClass().getGenericSuperclass();  
        Type[] params = ((ParameterizedType) genType).getActualTypeArguments();  
        this.clazz = (Class<T>) params[0];  
    }
}  

但是你必须实例化泛型类型,像这样,实例化TString:

class B extends A<String>{  
} 
然后

B b = new B();  
b.doGetClass();// b.clazz is String.class

在@BalwinderSingh的回答之后,我想到了这个:

public void work(T t){
    for(Field f : t.getClass().getDeclaredFields()){
        try {
            f.setAccessible(true);
            String name = f.getName();
            Object value = f.get(object);

        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

这比我一开始想的要简单。谢谢大家。

相关内容

  • 没有找到相关文章

最新更新