我有多个具有不同名称的类,但它们都具有相同的变量名。我想将它们传递给单个方法并直接访问变量。以下示例仅显示两个,但我还有更多。
Class1{
float x,y;
MyArrayObj myarrayobj;//this is new'ed.
}
Class2{
float x,y;
MyArrayObj myarrayobj;//this is new'ed.
}
static myGenericMethod(GenericClassObj myObj){
float x = myObj.x;
float pt = myObj.myarrayobj.array[0];
}
这是可能的,还是我必须使用" getters / setters' ?
答案 0 :(得分:4)
如果所有这些类共享公共字段,请将这些字段提取到超类,并使现有类扩展该字段。然后你的泛型方法接受超类类型的对象并直接访问字段。
abstract MySuperClass{
float x,y;
MyArrayObj myarrayobj;//this is new'ed.
}
Class1 extends MySuperClass{
// Class1 specific fields and methods
}
Class2 extends MySuperClass{
// Class2 specific fields and methods
}
static myGenericMethod(MySuperClass myObj){
float x = myObj.x;
float pt = myObj.myarrayobj.array[0];
}
如果你不希望它被实例化,那就让超类抽象(如上所述)。