>Java >java지도 시간 >Java에서 class와 class의 차이점에 대한 자세한 샘플 코드 설명

Java에서 class와 class의 차이점에 대한 자세한 샘플 코드 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-19 11:38:354095검색

? 정의되지 않은 Java 유형을 나타냅니다.

T는 Java 유형을 나타냅니다.

K V는 각각 Java 키 값의 키 값을 나타냅니다.

E는 Element의 약자입니다.

이런 것들로 표현되는 Object와 Java 유형의 차이점은 무엇인가요?
Object는 모든 클래스의 루트 클래스이며 특정 클래스입니다. 사용 시 유형 캐스팅이 필요할 수 있지만 T? 이를 기다리면 실제 사용하기 전에 유형이 결정되므로 강제 변환이 필요하지 않습니다.

첫 번째 유형은 제네릭의 고정 유형이고 두 번째 유형은 Object 클래스의 하위 클래스이면 모든 클래스의 기본 클래스이기 때문에 어떤 클래스라도 사용할 수 있습니다. 고정 일반 유형은 고정입니다(예: Interge, String). 32b4024199dd9b712dcc252796644ae7

ccabb5148182997eab7867be836d2f21을 확장합니까? 알 수 없는 유형을 나타냅니다.
그러나 이 알 수 없는 유형은 실제로 Collection의 하위 클래스이며 Collection은 이 와일드카드의 상한입니다.
예를 들어
class Test 48882e0bf1054c271980dd386ad2732b 그 중 T는 이러한 인스턴스를 구성할 때 특정 유형(구체 유형)입니다. 그러나 이 유형은 Collection 인터페이스를 구현하는 클래스가 많으므로 각 유형마다 특정 유형을 작성해야 합니다. , 그건 너무 번거롭습니다.
Object를 사용하여 보편적으로 만드는 것이 좋습니다.
c6681b89ac26c1396c3a4906ba175513 그 중 ?는 알 수 없는 유형이며 와일드카드 일반입니다.

The method take(Animal) in the type Test is not applicable for the arguments (Demo<Dog>)
The method take(Animal) in the type Test is not applicable for the arguments (Demo<Cat>)
The method take(Animal) in the type Test is not applicable for the arguments (Demo<Animal>)



public class Demo 5ad81ab85c1e7d5abd1bd5c95f1521b6{    private T ob;    public T getOb() {        return ob;
    }    public void setOb(T ob) {        this.ob = ob;
    }    public Demo(T ob) {        super();        this.ob = ob;
    }    
    public void print(){
        System.out.println("T的类型是:"+ob.getClass().getName());
    }
}
 public <T> Class<T> resolveAlias(String string) {    
    try {      
       if (string == null) {        
       return null;
      }      
      // issue #748
      String key = string.toLowerCase(Locale.ENGLISH);
      Class<T> value;      
      if (TYPE_ALIASES.containsKey(key)) {        
      value = (Class<T>) TYPE_ALIASES.get(key);
      } else {        
      value = (Class<T>) Resources.classForName(string);
      }      
      return value;
    } catch (ClassNotFoundException e) {      
    throw new TypeException("Could not resolve type alias &#39;" + string + "&#39;.  Cause: " + e, e);
    }
  }
public class Base {    
private static Map<String, Class<?>> map = new HashMap<>();    
static {        
map.put("string", String.class);        
map.put("integer", Integer.class);
    }
    @SuppressWarnings("unchecked")    
    public <T> Class<T> get(String str) {        
    return (Class<T>) map.get(str);
    }
    @Test    
    public void t() throws IllegalAccessException, InstantiationException {
        Base base = new Base();
        Class<Integer> string = base.get("string");
        System.out.println(string);
    }
}

위 내용은 Java에서 class와 class의 차이점에 대한 자세한 샘플 코드 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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