簡體   English   中英

Java-如何用字符串調用類的方法?

[英]Java - How do I call a class's method with a string?

我正在嘗試使用來自控制台的輸入來選擇我要運行哪個類的主要方法。 打包運行;

import java.lang.reflect.Method;
import java.util.Scanner;
import testing.*;

public class run {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException{
        Scanner input = new Scanner(System.in);
        String name = "testing."+input.nextLine();
        Class Program = Class.forName(name);
        //Try 1
        Program obj = new Program();
        //Got error "Program cannot be resolved to a type" on program and program
        //Try 2
        Program.main();
        //Got error "The method main() is undefined for the type Class" on main
        //Try 3
        Class.forName(name).main();
        //Got error "The method main() is undefined for the type Class<capture#2-of ?>" on main

    }
}
Class program = Class.forName(name);
program.getDeclaredMethod("main", String[].class).invoke(null, new Object[]{args});

提供您的main方法是public static void main(String[] args)

使用Reflection可以輕松解決此問題。 查看以下代碼:

package run;

import java.lang.reflect.Method;
import java.util.Scanner;
import testing.*;

public class run {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, NegativeArraySizeException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
        Scanner input = new Scanner(System.in);
        String name = "testing."+input.nextLine();
        Class program = Class.forName(name);

        program.getMethod("main", String[].class).invoke(null, Array.newInstance(String.class, 0));

    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM