Java动态创建未指定的类

标签 java class inheritance casting polymorphism

非常了解 java 的人提出的快速问题。 我的解释是这是不可能的,因为类必须在运行时之前显式声明,但我想要一个直接的答案。

我可以通过某种方式做到这一点(短代码):

Class foo extends Object; //There is a class named foo.

public Vector<Object> classVector = new Vector<Object>();

public static void main(String[] args){
    undefinedClassType = foo; //in some way
    classVector.add(new undefinedClassType); //Vector now has a Object that can be casted to foo.
}

只是想知道。感谢您的所有帮助和回复。

最佳答案

使用 Java Reflection 来解决这个问题:https://docs.oracle.com/javase/tutorial/reflect/

您可以使用SDK工具在运行时编译一个类,然后将其加载到类加载器中,然后使用反射来实例化它。

  • 使用JavaCompiler用于在运行时编译类。

  • 然后,使用以下命令将其加载到类加载器中(编译后的类文件需要位于类路径中,以便类加载器可以访问它)

    Class theClass = Class.forName("YourClass");

  • 最后使用反射进行实例化(此示例适用于具有默认构造函数的类)

    你的类loadClass = (YourClass)theClass.newInstance();

关于Java动态创建未指定的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27137613/

相关文章:

java - Object类怎么可能是子类的父类(super class)呢?

java - JPA UML 继承重叠

java - 在 Android 中用图像拼写单词

Java Map 按值排序

java - 给定一个 obj-c 无符号字节数组,如何在 Java 中获得等效的字节值?

objective-c - 单独类中的变量返回 null

java - 在java中如何处理 super ?

java - HttpClientBuilder 基本认证

python - 在 python 中创建一个可重用的类

java - 更改类文件时重新启动tomcat?