在Java中,是否可以动态创建仅给定父类实例的匿名子类实例?

在Java中,是否可以动态创建仅给定父类实例的匿名子类实例?

我试图实现的模式代码如下所示:

public interface IStringCarier { public String getStr(); } public static IStringCarier introduce(Object victim, final String str) { // question subject } public class AAA { } public static void main() { AAA aaa = new AAA(); assert !(aaa instanceof IStringCarier); IStringCarier bbb = introduce(aaa, "HelloWorld"); assert aaa == bbb; assert "HelloWorld".equals(bbb.getStr()); } 

实际上还有2个关于此代码的要求问题:

(2)不仅创建子类实例,还将原型实例重新分配给新创建的实例(代码中的第二个断言)。

(3)将子类引入某个特定的接口。

我怀疑这是可能的,但我是Java的新手,所以……

如果您是java新手,您必须问自己为什么需要此function。 如果你只描述你想要解决的问题,肯定会有更好的解决方案。

您拥有的唯一方法(除了重写字节码)是使用动态代理 ,因为它们能够在运行时实现接口。 但是以你建议的方式使用它们并不会真正有用。

不仅创建子类实例,还将原型实例重新分配给新创建的实例

Java不使用原型inheritance。