私は次のようなメソッドを持っています。このクラスは現在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.
}
}
この関数は何のリストを伝えられます特にリストにあるオブジェクトのプロパティを正しくフォーマットしてからクライアントに送信する必要があります。異なるオブジェクトは、これらのプロパティに対して異なるセッターとゲッターの名前を持ちます。だから私はどういうわけか一般的なClassオブジェクトを取得する必要があります、それが実際にどんな種類のクラスであるかを見るので私はどのメソッドを使うべきか知ることができます。
これは可能ですか?
回答:
回答№1は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 ...
}
}
}
あなたがすべての異なるクラスをチェックする必要がないので、共通のIntefaceはコードをより良くするでしょう。しかし、私はそれがあなたの場合に可能であるかどうかわからない
回答№2の場合は0
聞いたことがありますか インスタンス ステートメント?
オブジェクトがクラスのインスタンスなのか、それともそのサブクラスなのかを確認でき、ブール値を返します。
次のように:
anyObject instanceof Object // return true
integerObject instanceof Integer // return true
integerObject instanceof Number // return true
integerObject instanceof Double // return false