Java에서 레거시 컬렉션을 사용하는 것으로 제한됩니다. Hashtable을 만들었습니다.
private Hashtable dataStock = new Hashtable();
이 해시 테이블의 항목 중 하나는 Float 배열입니다.
dataStock.put("someArray", new Float[24]);
다음과 같이 해시 테이블에서이 항목을 검색하려는 경우 :
Float[] anotherArray = (Float[]) dataStock.get("someArray");
다음과 같은 캐스트 예외가 발생합니다.
Exception in thread "main" java.lang.ClassCastException
at java.lang.Throwable.fillInStackTrace(<unknown source file>:130)
at java.lang.Throwable.<init>(<unknown source file>:51)
at java.lang.Exception.<init>(<unknown source file>:13)
at java.lang.RuntimeException.<init>(<unknown source file>:18)
at java.lang.ClassCastException.<init>(<unknown source file>:17)
at fr.ecosense.business.FlashMemory.restoreStockData(FlashMemory.java:297)
내가 무엇을 잘못하고 있지? Hashtable에 배열을 저장하는 것이 다른 객체를 저장하는 것과 다른 이유는 무엇입니까? 설명을 찾고 있었지만 해시 테이블에 배열을 저장하는 데 대한 정보가 거의 없습니다.
편집 : Java ME를 사용하고 있습니다. 이로 인해 예상치 못한 동작이 발생할 수 있습니다.
데모 용입니다. 이 코드 조각 :
Hashtable dataStock = new Hashtable();
dataStock.put("someArray", new Float[24]);
Float[] anotherArray = (Float[]) dataStock.get("someArray");
잘 작동합니다. 즉, 코드의 어딘가에 유형이 다른 dataStock
키 someArray
를 사용 하여 다른 값에 넣었 음을 의미합니다 Float[]
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다