반사 사용 시 이상 발생 NoSuchMethodException 해결

9259 단어 자바
public class Person {
	public String name;
	protected int age;
	char sex;
	private String address;

	public Person() {
		System.out.println("       ");
	}

	private Person(String name, int age, char sex, String address) {
		System.out.println("         ");
		this.name = name;
		this.age = age;
		this.sex = sex;
		this.address = address;
	}

	public void show(Object obj) {
		System.out.println(obj);
	}

	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + ", sex=" + sex + ", address=" + address + "]";
	}
}
import java.lang.reflect.Method;

public class ReflectMethod {
	public static void main(String[] args) throws Exception {
		Class clazz = Class.forName("test.Person");
		Method[] methods = clazz.getMethods();
		
		methods = clazz.getDeclaredMethods();
		for (Method m : methods) {
			System.out.println(m);
		}
		System.out.println("----------------------");
		Person p = (Person) clazz.newInstance();
		
		Method method = clazz.getMethod("show");
		System.out.println(method);
	}
}

현재 멤버 들 을 반사 적 으로 보 여 주 려 면 다음 과 같은 이상 이 발생 합 니 다.
Exception in thread "main" `java.lang.NoSuchMethodException`: test.Person.show()
	at java.lang.Class.getMethod(Unknown Source)
	at test.ReflectMethod.main(ReflectMethod.java:15)

이상 하 다 는 뜻 은'이런 방법 이 없다'는 것 이다.원래 의 show 방법 에 Object 형식의 매개 변수 가 포함 되 어 있 는데 사용getMethod할 때 매개 변 수 를 주지 않 아서 이 방법 을 찾 을 수 없다.그러므로 오류 코드 를
Method method = clazz.getMethod("show",Object.class);

이 프로그램 실행 결 과 는?
public void xxx.xxx.Person.show(java.lang.Object)

좋은 웹페이지 즐겨찾기