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()
?假设您不需要默认构造函数以外的任何东西。