我有一个批处理应用程序,该应用程序使用带有方法名称的文件输入,然后根据设计名称使用名称来执行具有相同名称的方法。
例如,文件具有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