.NET에서 array 및 list는 모두 Enumerable을 상위 항목으로 가지므로 Enumerable을 인수로 받아들이는 메서드는 array 및 list를 인수로받을 수 있습니다. Java에서 비슷한 점이 있는지 궁금합니다.공통 조상과 Java 배열 및 목록
답변
아니, 자바에서 동등한 없습니다. 일반적으로 List<T>
, Collection<T>
또는 Iterable<T>
을 수신하는 API 메소드를 설계하는 것이 좋습니다. 이것들은 을 직접적으로 배열로 호출하는 것을 배제하지만 Arrays.asList
을 사용하여 배열을 매우 쉽게 감쌀 수 있습니다. 이것은 배열을 메소드 매개 변수로 지정하는 것보다 호출자에게 더 유연합니다. 이는 단일 구현을 강제합니다.
나는 그것이 이상하지 않다는 데 동의한다.
.NET에서 1 차원 배열은 IEnumerable<T>
을 구현하는 것이 아니라 IList<T>
도 구현합니다. 필요에 따라
두 가지 모두는 java.lang.Object
에서 파생됩니다. 그러나 이것은 수집과 관련이 없으며, 내가 생각하기에 당신이 찾고있는 컬렉션이라고 생각합니다.
Java의 배열 및 목록은 java.lang.Object 이외의 공통 조상을 공유하지 않습니다.
두
그렇게처럼 foreach 루프를 사용하여 액세스 할 수 있습니다String [] array = new String [] { "foo", "bar", "baz", };
List<String> list = Arrays.asList("x", "y", "z");
for (String s : array)
System.out.println(s);
for (String s : list)
System.out.println(s);
그들은 공통 조상이없는, 그러나, 두 가지 유형 사이의 캐스팅 방법이 있습니다 -
그래서 당신이 오버로드 제공 할 수 공통 유형으로 변환하는 방법 - 예 :
public void doAll(MyType[] array) {
doAll(Arrays.asList(array));
}
public void doAll(List<MyType> list) {
//... process List here.
}
기본적으로 배열에는 객체의 하위 클래스 인 암시 적 유형이 있습니다. JLS에 Arrays를 참조하십시오 : 우리가 covariance/contravariance을 고려할 때
public static void main(String[] args) {
int[] ia = new int[3];
System.out.println(ia.getClass());
System.out.println(ia.getClass().getSuperclass());
}
> class [I
> class java.lang.Object
배열과 목록을 처리하는 방법도 동일하지 않습니다.
List<Object> l = new ArrayList<String>(); // complain
Object[] l2 = new String[1]; // ok
l2[0] = 4; // throw ArrayStoreException.
제네릭을 고려해 보면 더 심해지지만 다른 주제입니다. 대체로이 디자인의 근거는 모르겠지만 함께 살 필요가 있습니다.
Iterable<T>
은 IEnumerable<T>
과 같습니다. 모든/대부분의 콜렉션은이 인터페이스 (ArrayList
및 배열 포함)를 구현합니다. 그렇습니다. 그러나 그것은 "조상"(.NET에서는 그렇지 않음)이 아니라 일반적인 인터페이스입니다.
- 1. Java generics 및 배열
- 2. Java : 배열 및 벡터
- 3. Java 배열 및 ArrayList
- 4. 배열 목록
- 5. 모든 요소를 출력 할 Java 배열 목록
- 6. C 배열 목록 배열
- 7. 복수 조상과 kdiff3을 가진 git 재귀 전략
- 8. 개체 및 참조가있는 Java 배열
- 9. 배열/목록
- 10. Gridview 셀 값 및 배열 목록
- 11. Android의 번들에 배열 목록 저장 및 검색
- 12. 두리스트의 공통 값을위한 메소드
- 13. 목록/배열 - 날짜 확인
- 14. PHP 방문자 목록 배열
- 15. 2D 점, 배열, 목록 또는 기타를 처리하기위한 Java 데이터 구조?
- 16. 선택 정렬 - 배열 목록
- 17. 선형 링크드 목록 - 유효/공통 용어?
- 18. "공통 키퍼 없음"java 호스트 및 Android 클라이언트
- 19. 두 언어 모두 Java 및 C# 공통 키 생성
- 20. VB.NET는 목록 배열
- 21. XSLT에서 목록/배열 만들기
- 22. Java에서 2D 배열 목록
- 23. 배열 목록 perl을 추가합니다
- 24. System.Type의 배열/목록/디렉토리
- 25. VB.net 목록/개체 배열
- 26. 해시 맵의 배열/목록?
- 27. 배열 목록 정렬
- 28. Java 에이전트, 계측 및 배열 생성
- 29. Java 클로저 유형, 변수, 배열 및 컬렉션
- 30. Java - 전역 변수 및 배열 문제
내 언어 혼란스러워 요. 요즘 C#을 읽었습니다. – duffymo