我想创建一个子类的对象

超过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 */ }
}

// ...


如果您不太熟悉OOPhere是一个很好的入门教程。

如果不允许您更改班级,则可以填充诸如HashMap<Class, MyFunctor>的查找表,您可以在其中为所拥有的每种类型的人分配不同的functor

另外,您可能要使用generics。泛型允许您捕获和限制传递给您的方法的对象的类型。

07-24 19:18