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

标签 java class inheritance instance

在 Java 中我有类 X和接口(interface)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_();
    }
}    

EDIT2

如果你想在 child 身上得到 parent 的实例,你可以这样做

this.getClass().getSuperclass().newInstance();

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

相关文章:

java - 在 C# 中验证在 Java 中签名的内容

java - 如何对具有实现相同接口(interface)的不同对象的列表进行排序?

javascript - 当您在特定的 div 上时,使用 Javascript 添加/删除类到 <li>。

python - 如何使用循环创建类的随机多个实例?

c++ - 为什么我必须通过this指针访问模板基类成员?

java - 无法在单独的线程中设置 SelectionKey 的interestOps

java - 将纪元以来的毫秒数转换为 1582 年之前的日历日期时出现问题

java - map 中的扩展类(java)

c# - 在 C# 中,一个类可以继承另一个类和接口(interface)吗?

c++ - 未定义的子类引用