java - 基于另一个类创建一个类的实例

标签 java class inheritance instance

在 Java 中,我有类 X和界面Y然后是一组类A1 .. 并且扩展 X并实现Y .
然后我为每个类创建一个包装器/适配器 A1..An (即 A1'..An' )。

现在,在客户端类 C ,我收到接口(interface)Y的实例列表(ArrayList < Y >)。

在这个地方,对于列表中的每个实例,我想创建一个类的新实例 Ax' (来自 A1'..An' )基于 Y 的哪个实例在列表中。对于 A1制作 A1'等等。

我的疑问是,如果没有 if,我怎么能做到这一点? .. else if ...和(实例) build 。我可以在这里以某种方式使用继承吗?

我正在检查一些设计模式,但我找不到如何根据哪个实例是另一个类来创建类的解决方案。

任何帮助和建议将不胜感激。谢谢。

最佳答案

for(Y y : ArrayList < Y >)  
{  
   y.getClass().newInstance();  
}  

如果我正确理解你的问题......

编辑
abstract class X implements Y 
{
    Y getInstance();
}

class A1 extends X
{
    void someMethod()
    {
        getInstance(); // return instance of A1_
    }
}

class A1_ extends A1
{
    Y getInstance()
    {
        return new A1_();
    }
}    

编辑2

如果你想在 child 中获得 parent 的实例,你可以这样做
this.getClass().getSuperclass().newInstance();

关于java - 基于另一个类创建一个类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12516962/

相关文章:

java - 如何在 Java 中创建一种可以表示两种不同类型的对象

java - SSLSocket : why do we need to do the handshake before accessing the server certificate?

JavaScript (jquery) - 点击事件中的范围问题

c++ - 没有实例的基类?

android - fragment 继承与 newInstance 模式

c++ - 观察者模式和继承:未调用正确的函数

java - android:字符串值使用操作数==匹配另一个字符串值不起作用?

c++ - C++:std::tr1::shared_ptr从这里

c++ - (重新定义错误)在C++中从一个基类创建多个继承类

java - 绕过grails View 解析器?