Java 如何一步获得子类对象?
我想创建一个子类对象 超过100个班级扩展了MasterClass 大师班是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; }
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...
}