在java中给出一个类对象的调用静态方法

时间:2012-01-28 03:41:56

标签: java

如果

class MyClass {
    public static void main(String[] str) {
        System.out.println("hello world");
    }
}

// in some other file and method
Class klass = Class.forName("MyClass");

如何拨打MyClass.main?我在编译时没有字符串“MyClass”,因此我不能简单地调用MyClass.main(String[]{})

2 个答案:

答案 0 :(得分:36)

您使用reflection来调用方法(或创建对象等)。以下是在main()中调用MyClass方法的示例。您需要确保MyClass在类路径中。

Class<?> cls = Class.forName("MyClass");
Method m = cls.getMethod("main", String[].class);
String[] params = null; 
m.invoke(null, (Object) params); 

答案 1 :(得分:-6)

如果您在编译时没有“MyClass”字符串,那么您需要查找它,框架用于执行此操作的常用方法:

  • 配置.properties或xml文件,您将在其中找到所需的类名。
  • 扫描当前目录中符合条件的.class文件。
  • 扫描符合条件的.class文件的.jar文件。