자바 범 형 T 와 T 의 사용 방법 에 대한 상세 한 설명

4280 단어 Java범 형T
범 형(Generic type 또는 generics)은 자바 언어의 유형 시스템 을 확장 하여 유형 에 따라 매개 변 수 를 만 들 수 있 는 클래스 를 만 드 는 것 을 지원 합 니 다.형식 매개 변 수 를 매개 변수 화 형식 을 사용 할 때 지정 한 형식의 자리 표시 자 로 볼 수 있 습 니 다.방법의 형식 매개 변 수 는 실행 할 때 전달 하 는 값 의 자리 표시 자 와 같 습 니 다.
집합 프레임 워 크(Collection framework)에서 범 형의 모습 을 곳곳에서 볼 수 있다.예 를 들 어 Map 류 는 하나의 Map 형식의 인 스 턴 스 에 임의의 대상 을 추가 할 수 있 습 니 다.가장 흔히 볼 수 있 는 경우 에 도 주어진 맵(map)에 string 키 쌍 을 저장 할 수 있 습 니 다.
이름 형식 매개 변수
흔히 볼 수 있 는 범 형 모델 에 대해 추천 하 는 범 형 유형 변수:
  • E:요소(Element),자바 집합 프레임 워 크
  • 에 많이 사 용 됩 니 다.
  • K:키워드(Key)
  • N:숫자(번호)
  • T:유형(유형)
  • V:값(Value)
  • 자바 의 범 형 은 위 범 형 이라는 것 을 잘 알 고 있 습 니 다.이것 은 자바 가 컴 파일 하 는 동안 모든 범 형 정보 가 지 워 지기 때 문 입 니 다.범 형 개념 을 정확하게 이해 하 는 가장 중요 한 전 제 는 유형 을 이해 하 는 것 입 니 다.자바 범 형 은 어떻게 일 합 니까?유형 지우 기 란 무엇 입 니까?답:범 형 은 형식 지우 기 를 통 해 이 루어 집 니 다.컴 파일 러 는 컴 파일 할 때 모든 범 형 유형 과 관련 된 정 보 를 지 웠 기 때문에 실행 할 때 범 형 유형 과 관련 된 정보 가 존재 하지 않 습 니 다.예 를 들 어 List가 실 행 될 때 하나의 List 로 만 표시 합 니 다.이렇게 하 는 동 기 는 자바 1.5 이전 버 전 을 호 환 하 는 것 입 니 다.
    범 형 지우 기 는 구체 적 으로 바이트 코드 로 컴 파일 할 때 먼저 유형 검 사 를 한 다음 에 유형 지우 기(즉,모든 유형의 매개 변 수 는 그들의 한정 유형 으로 교체 하고 클래스,변수 와 방법 을 포함)를 하 는 것 이다.마지막 으로 유형 지우 기와 다 형 성 이 충돌 하면 하위 클래스 에서 브리지 방법 으로 해결 하 는 것 이다.일반적인 방법 을 호출 하 는 반환 형식 이 지 워 지면 이 방법 을 호출 할 때 강제 형식 변환 을 삽입 합 니 다.형식 지우 기 에서 컴 파일 러 는 추가 클래스 를 만 들 지 않 고 실행 할 때 비용 이 들 지 않도록 합 니 다.
    형식 지우 기 원칙
  • 유 니 버 설 형식의 유형 매개 변수 로 바 인 딩 된 경계 유형 매개 변 수 를 교체 합 니 다.
  • 무한 형식 인 자 를 사용 하면 Object 로 유형 인 자 를 교체 합 니 다.
  • 유형 전환 을 삽입 하여 유형 안전 을 실현 합 니 다.
  • 확장 유 니 버 설 형식 에서 다 형 태 를 유지 하기 위해 브리지 를 생 성 합 니 다.
  • T 와 T 의 차이 점:T 는 Type 의 이니셜 입 니 다.T 는'반환 값'이 범 형 임 을 나타 내 고 어떤 유형 에 들 어가 면 어떤 유형 으로 되 돌아 갑 니까?단독'T'는 들 어 오 는 매개 변수 유형 을 제한 합 니 다.
    T 의 용법
    T 는 반환 값 T 의 유형 이 범 형 임 을 나타 낸다.T 는 자리 차지 문자 로 컴 파일 러 에 게 이 물건 은 먼저 나 에 게 남 겨 두 고 내 가 컴 파일 할 때 어떤 유형 인지 알려 주 는 것 이다.
    
    import org.springframework.util.CollectionUtils;
    import java.util.ArrayList;
    import java.util.List;
    public class Demo {
      public static void main(String[] args) {
        Demo demo = new Demo();
        //  string  
        List<String> array = new ArrayList<String>();
        array.add("test");
        array.add("doub");
        String str = demo.getListFisrt(array);
        System.out.println(str);
        //  Integer  
        List<Integer> nums = new ArrayList<Integer>();
        nums.add(31);
        nums.add(32);
        Integer num = demo.getListFisrt(nums);
        System.out.println(num);
      }
    
      /**
       *   <T> T          List
       *     T
       *          
       *           T     
       *            T
       *
       * @param data
       * @return
       */
      private <T> T getListFisrt(List<T> data) {
        if (CollectionUtils.isEmpty(data)) {
          return null;
        }
        return data.get(0);
      }
    }
    T 의 용법
    단독 T 는 매개 변수의 종 류 를 제한 합 니 다.이런 용법 은 일반적으로 하나의 대상 을 공동으로 조작 한 후에 안의 집합 정 보 를 얻 는 데 많이 쓰 인 다.
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Demo2<T> {
    
      public static void main(String[] args) {
        //  T  String   
        Demo2<String> demo = new Demo2<String>();
        List<String> array = new ArrayList<String>();
        array.add("Tom");
        array.add("  ");
        String str = demo.getListFisrt(array);
        System.out.println(str);
    
        //  Integer  
        Demo2<Integer> demo2 = new Demo2<Integer>();
        List<Integer> nums = new ArrayList<Integer>();
        nums.add(12);
        nums.add(13);
        Integer num = demo2.getListFisrt(nums);
        System.out.println(num);
      }
    
      /**
       *       T     
       *       Demo<T>           
       *
       * @param data
       * @return
       */
      private T getListFisrt(List<T> data) {
        if (data == null || data.size() == 0) {
          return null;
        }
        return data.get(0);
      }
    }
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기