反思不起作用

0 java reflection

我很反思.我面临一些错误.请帮忙.以下是我的代码:

EmployeeClass.java:

public class EmployeeClass {

    private String empID;
    private String empName;

    public String getEmpID() {
        return empID;
    }

    public void setEmpID(String empID) {
        this.empID = empID;
    }

    public String getEmpName() {
        return empName;
    }

    public void setEmpName(String empName) {
        this.empName = empName;
    }

    public EmployeeClass(String empID, String empName) { 
        this.empID = empID;
        this.empName = empName;
    }

    public String getAllDetails() {
        return empID + " " + empName;
    }

}
Run Code Online (Sandbox Code Playgroud)

ReflectionClass.java:

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class ReflectionClass {

    public static void main(String[] args) {

        EmployeeClass emp = new EmployeeClass("1", "Emp1");
        Method method = null;
        try {
            method = emp.getClass().getMethod("getAllDetails", null);
            System.out.println(method.invoke(null, null));
        } catch (NoSuchMethodException | SecurityException
                | IllegalAccessException | IllegalArgumentException
                | InvocationTargetException e) {
            System.out.println(e.getMessage());
        }


    }

}
Run Code Online (Sandbox Code Playgroud)

在运行ReflectionClass.java时,我收到以下错误:

线程"main"java.lang.NullPointerException中的异常

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                at java.lang.reflect.Method.invoke(Unknown Source)
                at myprgs.programs.ReflectionClass.main(ReflectionClass.java:14)
Run Code Online (Sandbox Code Playgroud)

Gok*_* KP 5

调用时需要传递类的对象(包含方法)invoke(),如下所示:

method.invoke(emp, null);
Run Code Online (Sandbox Code Playgroud)

更改:

System.out.println(method.invoke(null, null));
Run Code Online (Sandbox Code Playgroud)

至:

System.out.println(method.invoke(emp, null));
Run Code Online (Sandbox Code Playgroud)