如何在java中动态扩展类?

如何在java中动态扩展类?,java,oop,generics,wildcard,Java,Oop,Generics,Wildcard,我试图根据传递给其构造函数的参数的本机类型动态扩展对象。 我已经通读了一些java泛型和通配符的内容,但似乎找不到一个好的方法 用于解释的伪代码: public class myClass extends <?> { // Constructor public myClass(<?> param) { } } 公共类myClass扩展{ //建造师 公共myClass(参数){ } } 我必须使用某种生成器类吗?如果是的话,我将如何安排 编辑:

我试图根据传递给其构造函数的参数的本机类型动态扩展对象。
我已经通读了一些java泛型和通配符的内容,但似乎找不到一个好的方法

用于解释的伪代码:

public class myClass extends <?> {
    // Constructor
    public myClass(<?> param) {
    }
}
公共类myClass扩展{
//建造师
公共myClass(参数){
}
}
我必须使用某种生成器类吗?如果是的话,我将如何安排

编辑:
我有一种感觉,我的方法非常糟糕,因此我在这里问。进一步解释:

我有一个有很多子接口的接口,其中一些也有子接口。出于我的目的,我不能编辑超级接口来添加方法,因为它是一个API。我有一个事件,它传递给我一个子接口,我希望能够将它转换为我自己的对象,该对象具有更多的方法和属性,但我仍然希望访问子接口的方法

例如,子接口称为实体。我可以做
myClass extendedEntity=newmyclass(entity)
,它有我想要公开的新方法。如果我将传递的子接口作为对象的属性,我可以执行
extendedEntity.entity.originalMethod()
来访问子接口中包含的方法。但是我想把它作为
extendedEntity.originalMethod()
以及
extendedEntity.addedMethod()

这对任何人来说都有意义吗?是否有什么明显的事情我可以做,但我却错过了?
(作为一名机械工程师接受教育,java是一种爱好,请原谅!)

在运行时编译代码似乎是解决这个问题的合理方法。还有一次我听说,你也可以看看它。

泛型不是用来扩展类的。用于指定一个类处理给定的类(或一组类)。例如,
列表
是存储
字符串的
列表
,而不是
对象

泛型只在编译时使用。即使您请求的内容得到支持,在运行时也会以

  public class myClass extends Object {
    public myClass(Object param) {
    }
  }

与其担心泛型,为什么不研究委托模式呢?您的扩展实体可以实现
实体
,将传入的
实体
存储在私有字段中,并将所有
实体
方法调用委托给它。它可以在自己的接口上拥有您想要的任何额外方法


我不确定你是否也很了解铸造的工作原理。它不会神奇地把一个物体变成另一个。只有当
b
已经是
A
类型(或子类型)时,才能使用演员阵容
A=(A)b

可能重复的角色这里有一整桶错误。你有很好的理由不能做这样的事。认真考虑使用接口和反射代替。告诉我们你想要完成什么,我敢打赌我们可以用更好的方式来完成。你的方法不是最好的,但是:当你最终需要做这样的事情时,你通常会在早期的设计中犯一些严重错误。返回并重新评估任何促使这种需求的设计决策,并从OO设计的角度对其进行检查。是的,我只需要这样做,因为我正在尝试扩展API并以尽可能好的方式公开它。补充进一步解释我意识到演员不是那样的,哈哈-我只是说在一个理想的世界里,这就是我的目标。可能是术语使用不当,对不起。另外,如果我
myClass实现了实体
,我难道不能访问
实体
的子接口吗?这是我的问题,但是你可以实现多个接口。我有40个接口!顶级接口是实体,然后它就像一棵子接口树。您应该使用委托模式进行研究。当子类的数量像这样爆炸时,它非常理想。实际上,您将编译时类型定义替换为运行时类型定义。