>  기사  >  Java  >  Java 8에서 매개변수 이름을 가져오는 방법의 예

Java 8에서 매개변수 이름을 가져오는 방법의 예

高洛峰
高洛峰원래의
2017-01-22 11:03:342155검색

머리말

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에서는 컴파일러 옵션을 통해 열 수 있습니다:

Java 8中如何获取参数名称的方法示例

참고: 이 함수는 코드를 버전 1.8 클래스로 컴파일해야 합니다.

요약

이 글의 내용이 모두의 공부나 업무에 조금이나마 도움이 되었으면 좋겠습니다. 소통하라는 메시지.

Java 8에서 매개변수 이름을 얻는 방법에 대한 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.