我想创建一个子类的对象
超过100个班级扩展了MasterClass
大师班现为
public class MasterClass{
int key;
String value;
String displayValue;
boolean status;
}
public class User extends MasterClass{
public User(){ }
}
public class Customer extends MasterClass{
String productName;
public Customer (){ }
}
等等...
我将从客户端获得一个MasterClass对象,我想将该对象类型转换为相应的对象
if(masterClass instanceof User) {
User a_user = (User) a_ masterClass;
…
} else if(masterClass instanceof Customer) {
Customer a_customer = (Customer) a_ masterClass;
…
}
如果我这样做,我将最终得到100多个其他结果。
请让我知道我如何才能做到这一点,如果没有呢?
提前致谢。
最佳答案
按照Java的意图使用多态和泛型。
多态使您可以在对象上调用对每种类型的行为都不同的方法。实现此目的的最简单方法是在基类MasterClass
中提供一个抽象方法,然后在每个扩展类中使用不同的功能覆盖它。您可能正在寻找这样的东西:
class MasterClass {
int age;
// ...
public abstract void doWork();
public int getAge() { return age; }
// .. more methods
}
class User extends MasterClass {
// customize User here
@Override
public void doWork() { /* User does work in some way */ }
}
class Customer extends MasterClass {
// customize Customer here
@Override
public void doWork() { /* Customer does work in some other way */ }
}
// ...
如果您不太熟悉OOP,here是一个很好的入门教程。
如果不允许您更改班级,则可以填充诸如
HashMap<Class, MyFunctor>
的查找表,您可以在其中为所拥有的每种类型的人分配不同的functor。另外,您可能要使用generics。泛型允许您捕获和限制传递给您的方法的对象的类型。