有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java:基于字符串的加载类方法

我在这里看到了很多关于加载类的反射之类的东西,我只是不认为这是我想要的。 基本上,我想要的是一种从类动态加载方法的方法。 比如:loadDynamicClass(“NameFromString”)。onStart();其中onStart()是我试图加载的每个类中的一个方法。如果我在stackoverflow上遗漏了什么,就把它标记为副本


共 (2) 个答案

  1. # 1 楼答案

    可以使用Class.forName方法加载类

    例如

    (Cast) Class.forName("fully.qualified.class.Name").newInstance().yourMethod()
    

    (Cast)-可以是yourMethod()指定的类型

  2. # 2 楼答案

    在这样的课堂上:

    public class Foo
    {
        public void bar()
        {
            System.out.println("Foo.bar");
        }
    
        public void car()
        {
            System.out.println("Foo.car");
        }
    }
    

    代码如下:

    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    
    public class Main
    {
        public static void main(final String[] argv) 
            throws ClassNotFoundException, 
                   NoSuchMethodException, 
                   InstantiationException, 
                   IllegalAccessException,
                   IllegalArgumentException,
                   InvocationTargetException 
        {
            final Class<?> clazz;
            final Method   method;
            final Object   instance;
    
            clazz = Class.forName(argv[0]);
            method = clazz.getMethod(argv[1] /*, types */);
            instance = clazz.newInstance();
            method.invoke(instance /*, arguments */);
        }
    }
    

    你可以这样跑:

    java Main Foo bar
    java Main Foo car
    

    它会根据需要调用foo或bar方法