无法调用通过反射获得的方法
Can't invoke a method obtained through reflection
我遇到了错误
Cannot invoke "Object.getClass()" because "obj" is null
上线
m.invoke(null);
这是类:
package device;
public class Conveyor {
private String ID;
public Conveyor(String ID) {this.ID = ID;}
public void Start() {
}
public void Stop() {
}
}
package main;
import java.lang.reflect.Method;
import device.Conveyor;
public class Main {
public static void main(String args[]) {
Conveyor myConveyor = new Conveyor("C1");
Class<Conveyor> conveyorClass = (Class<Conveyor>) myConveyor.getClass();
for (Method m : conveyorClass.getMethods()) {
System.out.println(m.getName());
if (m.getName().equals("Start")) {
try {
m.invoke(null);
} catch (Exception ex) {
System.err.println(ex.getLocalizedMessage());
}
}
}
}
}
根据@markspace,我编辑了调用以添加调用对象:
m.invoke(myConveyor);
根据码头,调用方法接收将调用该方法的对象的引用。所以你需要把代码改成:
m.invoke(myConveyor);
我遇到了错误
Cannot invoke "Object.getClass()" because "obj" is null
上线
m.invoke(null);
这是类:
package device;
public class Conveyor {
private String ID;
public Conveyor(String ID) {this.ID = ID;}
public void Start() {
}
public void Stop() {
}
}
package main;
import java.lang.reflect.Method;
import device.Conveyor;
public class Main {
public static void main(String args[]) {
Conveyor myConveyor = new Conveyor("C1");
Class<Conveyor> conveyorClass = (Class<Conveyor>) myConveyor.getClass();
for (Method m : conveyorClass.getMethods()) {
System.out.println(m.getName());
if (m.getName().equals("Start")) {
try {
m.invoke(null);
} catch (Exception ex) {
System.err.println(ex.getLocalizedMessage());
}
}
}
}
}
根据@markspace,我编辑了调用以添加调用对象:
m.invoke(myConveyor);
根据码头,调用方法接收将调用该方法的对象的引用。所以你需要把代码改成:
m.invoke(myConveyor);