我有一个像下面这样的方法,这个类包含一个对象列表,到目前为止可以传入2个不同的类。
public class DataTableEntity {
List<Objects> objectContainer;
public void setLinks(Class cls){
for(Object obj : objectContainer){
//the cls variable will hold what type of object it is
//so I need to somehow say if its a 'dog' then the obj I am going through is a dog
// and the method is dog.getName else it might be cat and cat.getCatName etc.
}
}
此函数会被告知List具体是什么,然后应该在发送到客户端之前正确格式化该列表中对象的属性。不同的对象具有不同的setter和getter名称。所以我需要以某种方式获取泛型Class对象,看看它究竟是什么类,这样我就可以知道使用什么方法,“。getAbc / .setAbc”或“.getXyz / .setXyz”。
这可能吗?
答案 0 :(得分:1)
喜欢这个吗?
public class DataTableEntity {
List<Objects> objectContainer;
// The Objects know already which Class they are, no need to pass it
public void setLinks() {
for(Object obj : objectContainer) {
if(obj instanceof ClassA) {
ClassA a = (ClassA)obj;
a.doSomething();
}
else if(obj instanceof ClassB) {
ClassB b = (ClassB)obj;
b.doSomethingElse();
}
// and so on ...
}
}
}
通用接口可以使代码更好,因为您不必检查所有不同的类。但我不知道你的案件是否可能
答案 1 :(得分:0)
您是否听说过 instanceof 声明?
它允许您检查对象是否是类的实例或其子类,并返回布尔值。
像:
anyObject instanceof Object // return true
integerObject instanceof Integer // return true
integerObject instanceof Number // return true
integerObject instanceof Double // return false