0

我有一个像下面这样的方法,其中这个类包含一个对象列表,到目前为止,可以传入 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.
 }
}

该函数被告知列表具体是什么,然后应该在发送给客户端之前正确格式化该列表中对象的属性。对于这些属性,不同的对象具有不同的 setter 和 getter 名称。所以我需要以某种方式获取通用类对象,看看它到底是什么类,这样我就可以知道要使用什么方法,“.getAbc/.setAbc”或“.getXyz/.setXyz”。

这可能吗?

4

2 回答 2

2

像这样 ?

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 ...
        }
    }
}

一个通用的接口会使代码更好,因为您不必检查所有不同的类。但我不知道你的情况是否可行

于 2013-08-26T14:04:49.180 回答
0

你听说过instanceof语句吗?

它允许您检查对象是否是类或其子类的实例,并返回一个布尔值。

喜欢:

anyObject instanceof Object       // return true

integerObject instanceof Integer  // return true

integerObject instanceof Number   // return true

integerObject instanceof Double   // return false
于 2013-08-26T13:41:54.430 回答