我有一个批处理应用程序,该应用程序使用带有方法名称的文件输入,然后根据设计名称使用名称来执行具有相同名称的方法。

例如,文件具有getTemperature,然后在该类中执行getTemperature。

我正在使用以下Java:

java version "1.7.0_55"
OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1~0.13.10.1)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)


代码是:

 if (args.length < 2) {
        System.out.println("SF   <retailername> retailername <manName> man");
        System.exit(1);
    }
    GetSoogrData wa = new GetSoogrData();
    try {
        BufferedReader bf = new BufferedReader(new FileReader(args[0]));

        String line = null;
        while ((line = bf.readLine()) != null) {
            Class c  = wa.getClass();


            c.getDeclaredMethod(line, null);
        }


编译器给出有关原始类型的警告(类是原始类型),并在getDeclaredMethod上给出有关类型的警告。该类刚刚被声明:

public class GetSoogrData {

    private HashMap<String, Integer> wordDictionary =   new HashMap<String, Integer>();
    private File inputFile;

    private File outputFile;
    private String retailerName;
    private String man;
    private String[] word;

    public void getTemperature() {
        System.out.println("device temp");
    }


我正在用getTemperature测试。

我尝试了几个版本的代码,没有错误,但也没有结果。该代码似乎完全忽略了该方法。我在没有getDeclaredMethod的情况下进行了测试,它工作正常,因此可以访问该方法并实例化该类。因此,错误在于实际的getDeclaredMethod。我看到Java版本会影响这一点。

有没有人有解决方案?

最佳答案

您应该执行以下操作:

Method method = c.getDeclaredMethod(line);
method.invoke(wa);//this will call method whatever is there in your line method without any parameters

10-07 17:49