Java 如何获得儿童课程?

Java 如何获得儿童课程?,java,Java,我想创建一个子类的对象 超过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{ Strin

我想创建一个子类的对象

超过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个其他的如果

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


提前感谢。

也许您可以将泛型与约束T扩展MasterClass一起使用?

也许您可以将泛型与约束T扩展MasterClass一起使用?

按照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 */ }
}

// ...
如果你不太熟悉,这是一个很好的入门教程

如果不允许您更改类,您可以填充一个查找表,如
HashMap
,在该表中,您可以为您拥有的每种类型的人分配不同的类


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

按照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 */ }
}

// ...
如果你不太熟悉,这是一个很好的入门教程

如果不允许您更改类,您可以填充一个查找表,如
HashMap
,在该表中,您可以为您拥有的每种类型的人分配不同的类


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

使用设计模式的基本概念,您可以在尝试初始化的对象中创建这样的构造函数

MasterClass masterClass;

public MyCreatorOject(MasterClass masterClass)
{
    this.masterClass = masterClass;
}
稍后,当您创建对象时,它可以

new MyCreatorObject(new User());


使用设计模式的基本概念,您可以在尝试初始化的对象中创建这样的构造函数

MasterClass masterClass;

public MyCreatorOject(MasterClass masterClass)
{
    this.masterClass = masterClass;
}
稍后,当您创建对象时,它可以

new MyCreatorObject(new User());


建议:阅读以提出可读性问题如果您有一个类型层次结构,其中
User
Customer
扩展
MasterClass
,请认真考虑您的设计。
MasterClass
为您提供了哪些您无法通过组合解决的问题?您打算如何处理每个铸造参考(
a_用户
等)?在不知道更多的情况下,我的直觉是多态性可以通过在
MasterClass
@Matthias上有一个方法来实现,因为您的重播我已经更改了代码,请检查它。帮助是否需要完整的建议:阅读以放置可读的问题如果您有一个类型层次结构,其中
User
Customer
扩展
MasterClass
,请真正考虑您的设计。
MasterClass
为您提供了哪些您无法通过组合解决的问题?您打算如何处理每个铸造参考(
a_用户
等)?在不知道更多的情况下,我的直觉是多态性可以通过在
MasterClass
@Matthias上有一个方法来实现,因为您的重播我已经更改了代码,请检查它。需要全部帮助吗