Java:将子类类型作为Main()的参数传递

Ada*_*m_G 3 java program-entry-point class subclass

args[]public static void main(String args[]),我想指定要执行哪个子类.如何将args[](a String)的参数转换为类声明?

例如,如果args[0]= "Subclass1",那么我需要声明:
BaseClass b = new Subclass1()

这可能与Java有关吗?

编辑
为了使这一步更加棘手,这些子类来自外部.jar.有没有办法动态导入子类,还是需要事先导入它们?

Ars*_*yan 8

类名应该是类的完整路径,即[package].[classname]你可以使用 Class.forName([class name]).newInstance();


sp0*_*00m 6

public static void main(String[] args) {
    if (args.length > 0) {
        // exceptions handling omitted
        Class<?> clazz = Class.forName(args[0]);
        // check before casting
        if (BaseClass.class.isAssignableFrom(clazz)) {
            BaseClass instance = (BaseClass) clazz.newInstance();
            // use
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,className应该是该类的完整路径,即不仅是Subclass1,而且your.package.Subclass1.