Java 범용 유형 와일드카드 및 C# 비교 분석

c#의 범주에 유형 어댑터가 없는 이유는.net의 범주형은 CLR이 지원하는 범주형이지만 Java의 JVM은 범주형을 지원하지 않습니다. 단지 문법 설탕일 뿐입니다. 컴파일러가 컴파일할 때object 형식으로 변환됩니다
형식 어댑터는 자바에서 범용 형식의 부류를 나타낸다

public void test(List<Object> c)  
{  
   for(int i = 0;i < c.size();i++)  
   {  
       System.out.println(c.get(i));  
   }  
}  

// List<String>   
List<String> strList = new ArrayList<String>();  
// strList test   
test(strList);  
위의 프로그램을 컴파일하면test(strList)에서 컴파일 오류가 발생합니다. 이것은 List 을 List 의 하위 클래스로 사용할 수 없다는 것을 의미합니다.이럴 때는 유형 어댑터를 사용해야 하는데, 어댑터는 하나입니까?번호
위의 List를 List로 바꿉니다.번역을 통해서 할 수 있어요.

public void test(List<?> c)  
{  
   for(int i = 0;i < c.size();i++)  
   {  
       System.out.println(c.get(i));  
   }  
}  
List은 List로 사용할 수 있습니다.의 하위 클래스에서 사용, List모든 List 유형의 상위 클래스로 사용할 수 있습니다.
List의 부류가 아니라 List의 부류가 되고 싶다면,?이렇게 쓰세요
C#에서 구속 범주 유형은 다음과 같습니다.

class MyClass<T, U>  
  where T : class  
  where U : struct  
{}  

interface IMyInterface  
{  
}  
  
class Dictionary<TKey, TVal>  
  where TKey : IComparable, IEnumerable  
  where TVal : IMyInterface  
{  
  public void Add(TKey key, TVal val)  
  {  
  }  
}  
Java의 제약조건 범용 와일드카드 상한:

// T Number , java.io.Serializable   
Public class Apple<T extends Number & java.io.Serializable>  
{}  
지금까지 여러분에게 Java 범용 유형 어댑터와 C#의 모든 내용을 비교 분석한 것입니다. 많은 응원 부탁드립니다~

좋은 웹페이지 즐겨찾기