Java 如何仅通过拥有class对象来实例化一个类,并仅通过使用实例化该类的类来强制转换结果?

Java 如何仅通过拥有class对象来实例化一个类,并仅通过使用实例化该类的类来强制转换结果?,java,reflection,Java,Reflection,我有以下问题: 我有一个类对象(MyClass.class),我需要从该类对象实例化一个对象。这是简单的部分oisMyClass.class.getDeclaredConstructor().newInstance()(该类只有一个不带参数的构造函数) 棘手的部分(或者我认为是这样)是使用我创建的class对象将结果对象强制转换为适当的类型(MyClass)。 请注意,我无法编写以下代码(MyClass)MyClass.class.getDeclaredConstructor().newInst

我有以下问题: 我有一个类对象(MyClass.class),我需要从该类对象实例化一个对象。这是简单的部分ois
MyClass.class.getDeclaredConstructor().newInstance()
(该类只有一个不带参数的构造函数)

棘手的部分(或者我认为是这样)是使用我创建的class对象将结果对象强制转换为适当的类型(MyClass)。 请注意,我无法编写以下代码
(MyClass)MyClass.class.getDeclaredConstructor().newInstance()

如果有人能帮我,我将不胜感激。

写:

MyClass.class.cast(myInstance);
。除了空检查和类型检查之外,这并不是很有用:

public T cast(Object obj) {
    if (obj != null && !isInstance(obj))
        throw new ClassCastException(cannotCastMsg(obj));
    return (T) obj;
}

。。。但这就是使用反射强制转换类的方式,我怀疑这个问题是关于某个测试或赋值的。

强制转换是关于编译时类型的。如果只有
对象,那么就没有编译时类型。您试图解决什么问题?public void函数(类c){(如何转换此函数?)c.getDeclaredConstructor().newInstance();}您不能,而且它也没有任何意义。调用
newInstance()
在类对象上排序意味着您在实例化它时知道它的类型,否则您就不会调用它。在大多数用例中,有人在编译时编写代码,知道反射类的类型,并显式地强制转换返回的对象。您的
void
函数可能应该返回对象,而不是在函数体中使用它。问题是我调用了getDeclaredConstructors(),从那里调用newInstance()给了我一个对象,但不管怎样,您的答案正是我需要的。谢谢@Carolik:啊哈,但是你知道你可以通过
类调用默认构造函数。newInstance()
,如果它是公共的?如果它是公共的-是的,但如果不是…我必须使其可访问,这导致了我的第一个案例,我想避免的,因为你的回答,我现在可以很高兴地避免它:)