是否可以通过将"new Object()"作为泛型类来实例化泛型类?

1 java generics casting object instantiation

所以我试图创建一个使用泛型的类来扩展抽象类.防爆.

public abstract class Template<C extends Abstract>
Run Code Online (Sandbox Code Playgroud)

但是,我需要在我的课程中实例化这个'C'.我想我可能会这样做:

C s = (C) ((C)new Object()).getClass().getConstructor(Known.class,AnotherKnown.class).newInstance(objectOfKnownType,objectOfAnotherKnownType);
Run Code Online (Sandbox Code Playgroud)

所以我的问题基本上是否可行.我觉得这样

((C) new Object()).getClass()
Run Code Online (Sandbox Code Playgroud)

可能会给我一些问题.

如果我将其更改为:

C a;
C s = (C) (a.getClass().getConstructor( ... ).newInstance( ... ));
Run Code Online (Sandbox Code Playgroud)

K-b*_*llo 5

(C) new Object()
Run Code Online (Sandbox Code Playgroud)

是无效的,可能会给你一个ClassCastException以后,因为一个Object不是C.

实现泛型的方式意味着Template不知道C实例化它,你将不得不创建一个接受Class对象的方法或构造函数.

public abstract class Template<C extends Abstract>
{
    private Class<C> classOfC;

    public Template( Class<C> clazz ) {
        classOfC = clazz;
    }
}
Run Code Online (Sandbox Code Playgroud)