정확히 "유형이 강력 함"과 "유형 안전"의 차이점을 정확히 알지 못합니다.Arraylist는 타입 세이프인가 강건한 타이프인가?
간단한 언어로 설명해 주시겠습니까?
Arraylist를 사용한다고 가정하겠습니다. 유형이 안전하거나 강력하게 입력되었다고 결론을 내릴 수 없습니다. 아니면 둘 다 사용할 수 있습니까?
정확히 "유형이 강력 함"과 "유형 안전"의 차이점을 정확히 알지 못합니다.Arraylist는 타입 세이프인가 강건한 타이프인가?
간단한 언어로 설명해 주시겠습니까?
Arraylist를 사용한다고 가정하겠습니다. 유형이 안전하거나 강력하게 입력되었다고 결론을 내릴 수 없습니다. 아니면 둘 다 사용할 수 있습니까?
ArrayList
은 타입 안전하지 않습니다. 이것이 의미하는 것은 ArrayList
는 모든 유형의 값을 할당 할 수 있다는 것입니다 : 당신이 목록을 사용하여 갈 때, 당신은 목록에있는 유형을 알 수 없기 때문에
ArrayList myList = new ArrayList();
myList.Add("this is a string");
myList.Add(19); //Notice that this is an int, but it doesn't throw an error!
이이 문제입니다. 던져진 과실의 기회는 아주 높습니다.
ArrayLists
! List<T>
유형 안전하고 강력한 형식의 문구가로드되어있어 어디에서나 프로그래머에게 정확한 정의를 고정시킬 수 없습니다. 그러나 ArrayLists가 중요하다는 모든면에서 도도 아닌지에 대한 충분한 합의가 있습니다.
ArrayLists를 사용하지 마십시오! 대신 일반 List<T>
컬렉션을 사용하십시오.
arraylist가 아니며 TypeSafe가 아니며 강력하게 형식화되었음을 의미합니다. –
의미 있음 컬렉션 내에 저장된 항목에 대해서도 적용하지 않습니다. –
그러나 짧은 결론은 동일합니다. TypeSafe도 강력하게 타입 화되지 않았기 때문입니다. –
데이터 구조는 유형 안전하지 않으며 강력한 형식이 아닙니다. 어떤 유형의 개체가 ArrayList
에 있는지 보장 할 수 없으므로 ASP.NET의 경우 Session
캐시에 개체를 저장하는 방법과 비슷한 모든 것이 Object
으로 저장됩니다.
ArrayList
을 사용할 때 가장 큰 단점은 실제 목록에있는 개체에 액세스하려고 할 때마다 발생해야하는 캐스팅이었습니다. 목록에있는 값 중 예상했던 유형이 아닌 경우 캐스팅 예외가 발생할 수 있으며이를 처리 할 코드는 단지 추한 것입니다.
가능하면 List<T>
이 ArrayList
데이터 구조에 가장 유사한 제네릭 형식 인 제네릭을 사용하십시오.
귀하의 질문에 대한 확신이 없습니다.
"강력 함/약한 유형"은 프로그래밍 언어의 품질입니다. Java는 강력한 형식이므로 엄격한 구문을 사용하므로 오류가 런타임에 실행되기 전에 컴파일 타임에 코드에서 문제를 찾을 수 있습니다.
Java가 정확하게 형식 안전하지 않을 수도 있지만 정확한 대답은 확실하지 않습니다. 그것은 제네릭을 허용합니다. 즉, 문자열의 ArrayList (ArrayList<String>
), 정수의 ArrayList (ArrayList<Integer>
), 부울의 ArrayList (ArrayList<Boolean>
)를 만들 수 있습니다. ArrayList<T>
은 <T>
을 모든 개체로 대체 할 수 있음을 의미합니다. 당신은 심지어 어떤 아이의 ArrayList가있을 수 있습니다
class Admin extends User {
//Stuff
}
class Student extends User {
//Stuff
}
class Teacher extends User {
//Stuff
}
: ArrayList<? extends T>
는 T.
는 다음과 같은 수업을 말과 대체 할 수 있음을 의미 사용자 개체 (예 : ArrayList<User>
). 이 목록에 학생, 관리자 및 교사를 추가 할 수 있습니다. 개체입니다.
그러나이 ArrayList가 보유하고있는 데이터 형식을 지정하지 않으면 (예 : List l = new ArrayList();
) 개체을 입력 할 수 있으므로 형식이 안전하지 않습니다.
제네릭 남용의 예 can be seen on Wikipedia.
완벽합니다.하지만 제 질문은 매우 분명하다고 생각합니다. Generic은 우리가 typesafe 구현을 위해 사용하는 방법입니다. 그러나 Arraylist는 기본으로 typesafe도 강력하지 않습니다. 이 진술입니다. –
"강력하게 형식화"는 일반적으로 프로그래밍 언어에 적용되는 반면 "형식 안전성"은 "형식 안전성"구문에서 오는 것일 수 있습니다 ... –