머리말
Java 8 이전 버전에서는 코드가 클래스 파일로 컴파일된 후 메서드 매개변수의 유형이 고정되지만 매개변수 이름은 손실됩니다. 이는 동적 언어와는 완전히 대조적입니다. 매개변수 이름 대비에 크게 의존합니다. 이제 Java 8에서는 클래스 파일에 매개변수 이름을 유지하기 시작하여 리플렉션에 큰 편의를 제공합니다.
예:
public class GetRuntimeParameterName { public void createUser(String name, int age, int version) { // } public static void main(String[] args) throws Exception { for (Method m : GetRuntimeParameterName.class.getMethods()) { System.out.println("----------------------------------------"); System.out.println(" method: " + m.getName()); System.out.println(" return: " + m.getReturnType().getName()); for (Parameter p : m.getParameters()) { System.out.println("parameter: " + p.getType().getName() + ", " + p.getName()); } } } }
Method.getParameters는 1.8의 새로운 메소드로, 매개변수 이름을 포함한 매개변수 정보를 얻을 수 있습니다.
위 코드에서 출력되는 createUser 매개변수는 다음과 같습니다.
method: createUser return: void parameter: java.lang.String, name parameter: int, age parameter: int, version
매개변수 이름은 클래스 파일로 컴파일되어 의미 없는 arg0, arg1...을 대체합니다.
매개변수 이름에 의존하는 많은 프레임워크의 경우 코드를 더욱 단순화할 수 있습니다.
@Path("/groups/:groupid/:userid") public User getUser(String groupid, String userid) { ... }
매개변수 이름이 없으면 주석을 추가해야 합니다.
@Path("/groups/:groupid/:userid") public User getUser(@Param("groupid") String groupid, @Param("userid") String userid) { ... }
안타깝게도 매개변수 이름을 유지하는 옵션은 컴파일 스위치 javac -parameters에 의해 켜져 있으며 기본적으로 꺼져 있습니다.
Eclipse에서는 컴파일러 옵션을 통해 열 수 있습니다:
참고: 이 함수는 코드를 버전 1.8 클래스로 컴파일해야 합니다.
요약
이 글의 내용이 모두의 공부나 업무에 조금이나마 도움이 되었으면 좋겠습니다. 소통하라는 메시지.
Java 8에서 매개변수 이름을 얻는 방법에 대한 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!