gpt4 book ai didi

java - 如何获得 Child 类?

转载 作者:行者123 更新时间:2023-11-29 03:27:23 25 4
gpt4 key购买 nike

我想创建一个子类的对象

100多个类(class)延伸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 个 else if。

请告诉我如何在没有 else if 的情况下实现这一点?

提前致谢。

最佳答案

按照 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 .泛型允许您捕获和限制传递给您的方法的对象类型。

关于java - 如何获得 Child 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20323441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com