Java 从泛型和重写方法创建匿名类实例

Java 从泛型和重写方法创建匿名类实例,java,class,generics,Java,Class,Generics,我试图从传递给方法的类对象创建T的(匿名)实例。我知道如何在Class对象上使用newInstance来创建T的实例,但我想重写Foo中的方法。 我一直在寻找解决方案,但我想不出来 我有以下设置: public class Foo { public void doStuff() { // do stuff } } 我想做以下工作: public <T extends Foo> T getFoo(final Class<T> clazz) { //

我试图从传递给方法的
对象创建
T
的(匿名)实例。我知道如何在
Class
对象上使用
newInstance
来创建
T
的实例,但我想重写
Foo
中的方法。 我一直在寻找解决方案,但我想不出来

我有以下设置:

public class Foo {

  public void doStuff() {
    // do stuff
  }

}
我想做以下工作:

public <T extends Foo> T getFoo(final Class<T> clazz) {
  // How?
  return new T() {
    @Override
    public void doStuff() {
      // do other stuff
    }
  }
}
public T getFoo(最后一节课){
//怎么做?
返回新的T(){
@凌驾
公共空间{
//做其他事情
}
}
}
我怎样才能做到这一点?有什么解决办法吗

提前谢谢


编辑:这不是建议问题的重复。正如我所说,我已经知道如何使用
newInstance
,这也是该问题的答案。我需要重写
Foo
中的一个方法,该方法在建议的问题中没有得到回答。

您必须动态创建字节码才能做到这一点。不是说这是不可能的,但这绝对不是一项琐碎的任务,而且可能有更好/更简单的方法来实现你想要的。你想解决什么具体问题?@Priv,我们可以从
clazz
构建一个代理并调整
InvocationHandler
,但是
clazz
应该是一个接口。不,我正在试图覆盖一个现有的方法。@Andrew你仍然可以发布你的答案。其他人可能也会发现它很有用。我不太明白的是,为什么每次实例化
Foo
子类的实例时,都需要重写相同的方法,每次都需要使用相同的实现。为什么不在子类定义中执行此操作(您无论如何都需要这样做)并返回
clazz.newInstance()
?假设您不需要默认构造函数以外的任何东西。