java용 범용 매개 변수 유형 구조 수조 상세 및 실례

java용 범용 매개 변수 유형 구조 수조 상세 및 실례
선언:
얼마 전에 코드를 칠 때 갑자기 문제가 하나 생각났다.평소에 우리의 수조는 매개 변수로 전송되는 방법입니다. 만약 우리가 방법에서 수조를 만들려면 어떻습니까?유형이 명확한 상황에서 이것은 별다른 난이도가 없다.만약 우리가 전송한 매개 변수가 범용 유형의 매개 변수라면?

public static <T> T[] creArray (T obj){
    T[] arr = new T[10];
}
위와 같이 T로 new 그룹을 직접 만드는 방법은 잘못된 것입니다. 컴파일할 때 Cannot create a generic array of T.의 오류가 발생합니다.알 수 없는 유형의 배열 생성은 Java에서 지원되지 않습니다.
마지막으로 나는 이런 완벽한 해결 방법을 얻었다.

package Test;

import java.lang.reflect.Array;

/**
 * 
 * @author QuinnNorris
 *  
 */
public class Test {
  public static void main(String[] args) {
    // TODO Auto-generated method stub

    String a = "ccc";// String, 
    String[] ar = creArray(a);
    for(String art :ar)// 
      System.out.println(art);
  }

  // 
  public static <T> T[] creArray (T obj){
    T[] arr = (T[])Array.newInstance(obj.getClass(), 5);
    arr[1] = obj;
    System.out.println(arr[1]);
    return arr;
  }
}

코드 출력은 다음과 같습니다.

ccc // arr[1] 
null // 5 main  
ccc 
null 
null 
null
상술한 방법은 완전히 실행할 수 있습니다. 우리는 Array 클래스의 new Instance 방법으로 지정된 유형의 그룹을 구성했습니다.반사로 이 일을 완성하는 것도 이치에 맞는 것이다.범용 유형 T가 에서 실행될 때 확정될 수 있기 때문에 우리가 범용 수조를 만들 수 있는 것도 필연적으로 자바가 실행될 때 방법을 강구하는 것이다. 자바가 실행될 때 작용할 수 있는 기술은 반사보다 낫다.
또한null을 보았습니다. 마침 여기서도 자바에서 서로 다른 유형의 수조가 초기화된 값 상황을 정리했습니다.
기본 유형 (수치형): 0
기본 유형(부울형): false
기본 유형(char형): (char) 0
객체 유형:null
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기