Java 如何一步获得子类对象?

Java 如何一步获得子类对象?,java,Java,我想创建一个子类对象 超过100个班级扩展了MasterClass 大师班是 public class MasterClass{ private int key; private String value; private String description; public String getKey() { return key; } public void setKey(String key) { this.key= key; }

我想创建一个子类对象

超过100个班级扩展了MasterClass

大师班是

 public class MasterClass{
  private int key;
  private String value;
  private String description;

  public String getKey()
  {
    return key;
  }

  public void setKey(String key)
  {
    this.key= key;
  }


  public String getDescription()
  {
    return description;
  }

  public void setDescription(String description)
  {
    this.description = description;
  }

  public String getValue()
  {
    return value;
  }

  public void setValue(String value)
  {
    this.value= value;
  }

 }
其他类的示例

public class Product extends MasterClass{
  public Product(){ }
 }
public class Customer extends MasterClass{
  private int productKey;
  public Customer (){ }
 public String getProductKey()
  {
    return productKey;
  }

  public void setProductKey(String productKey)
  {
    this.productKey= productKey;
  }

}
等等

我将从客户端获得一个MasterClass对象,我想将该对象类型转换为相应的对象

if(masterClass instanceof User) {  
  User a_user = (User) a_ masterClass;

} else if(masterClass instanceof Customer) {
  Customer a_customer = (Customer) a_ masterClass;

}
  .
  .//96 else if
  .
  .
  .
  .
  else
  {
   //Create an object
  }
如果我这样做了,我会得到100个其他的如果

请让我知道,如果没有其他条件,我如何实现这一目标

提前谢谢。

您需要多态性

例如:

  public void func(MasterClass m){

     //your if else block;

}
而不是这个。您可以将func函数添加到MasterClass中,并在每个子类上重写它。然后,您只需调用
YourInstance.func()


100个儿童班?疯了。 我建议您检查是否所有这些子类都与主类有很强的“is-A”逻辑关系

通常,为了避免if-else,java会使用多态性进行运行时检查,根据参数类型决定调用哪个函数

例如


在那之后,你想如何处理
a_用户
?如果你最终在代码中使用RTTI(从C++借用的行话:运行时类型识别,
instanceof
),最好是重新设计代码,使用多态性来实现你的目标。@Alex a_用户是持久对象。所有客户端类都是持久对象
 public class MasterClass{
         public void func(){};
    }
    public class Customer extends MasterClass{
     @Override
     //implement such on each child
     public void func(){//spesific overrided function for Customer child }
    }

  //then


     public void func(MasterClass m){

             m.func();
        }
class Application{

   public static void main(String[] args){
      Application app = new Application();
      ChildClass1 child1 = new ChildClass1();
      ChildClass2 child2 = new ChildClass2();

      app.method(child1); //"ChildClass1's behaviour"
      app.method(child2); //"ChildClass2's behaviour"
   }

  public method(ChildClass1 arg) {
    System.out.println("ChildClass1's behaviour");
  }

   public method(ChildClass2 arg) {
   System.out.println("ChildClass2's behaviour");
  }

   // 98 more...
}