我想创建一个子类的对象
超过100个类扩展MasterClass
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个其他的。
请告诉我如何在没有其他情况下实现这一目标?
提前致谢。
答案 0 :(得分:3)
像Java一样使用多态和泛型。
Polymorphism允许您在对象上调用对每种类型都有不同行为的方法。实现此目的的最简单方法是在基类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 */ }
}
// ...
如果您不允许更改课程,则可以填写HashMap<Class, MyFunctor>
这样的查找表,您可以为每种类型的人分配不同的functor。
此外,您可能希望使用generics。泛型允许您捕获和限制传递给方法的对象类型。
答案 1 :(得分:1)
也许你可以使用约束T扩展MasterClass的泛型?
答案 2 :(得分:0)
使用Design Pattern的基本概念,您可以在尝试初始化的对象中创建这样的构造函数
MasterClass masterClass;
public MyCreatorOject(MasterClass masterClass)
{
this.masterClass = masterClass;
}
稍后当你创建对象时,它可以是
new MyCreatorObject(new User());
或
new MyCreatorObject(new Customer());