2014-12-02 3 views
0
내가 코드 블록에 식별자 예상 오류에 봉착

는 :식별자 예상 오류 해시 테이블

@SuppressWarnings({"rawtypes","unchecked"}) 
    theLists = new List<AnyType>[ nextPrime(2 * theLists.length) ]; 
for(int j = 0; j < theLists.length; j++) 
     theLists[ j ] = new LinkedList<>(); 

컴파일러는 식별자가 "theLists"후와 = 전에이 있어야 말한다. 어떤 식별자? 이 문제를 어떻게 해결할 수 있습니까?

이 전체 방법 :

 private void rehash() 
{ 
    List<AnyType> [ ] oldLists = theLists; 

     // Create new double-sized, empty table 
@SuppressWarnings({"rawtypes","unchecked"}) 
    theLists = new List<AnyType>[ nextPrime(2 * theLists.length) ]; 
for(int j = 0; j < theLists.length; j++) 
     theLists[ j ] = new LinkedList<>(); 

     // Copy table over 
    currentSize = 0; 
    for(List<AnyType> list : oldLists) 
     for(AnyType item : list) 
      insert(item); 
} 

나는 몸에서 억제 경고를 제거하고 바로 생성자에 넣어,하지만 여전히 식별자가 예상 말한다 :

public HashTable(int size) 
{ 

    @SuppressWarnings("unchecked") theLists = (List<AnyType>[]) new List<?>[nextPrime(2 * theLists.length)]; 
for(int i = 0; i < theLists.length; i++) 
     theLists[ i ] = new ArrayList<>(); 

} 
+1

당신은 배열이 아닌 유형에 대한 브래킷 표기법을 사용할 수 없습니다 할 수 있습니다. 또한'List'는 인스턴스화 될 수 없습니다. – August

+0

@August 그건 배열 형식처럼 보입니다. –

+0

어레이 유형입니다. – user2820406

답변

0

의 주석이 있습니다 단지 following locations

  • 에 나타 나
  • 생성자 선언 (특수 종류의 요소를 포함하여) THOD 선언
  • 로컬 변수 선언 ( 명령문의 루프 변수 및 자원 변수 포함
  • 공식 예외 변수 선언 (ENUM 상수 포함)
  • 필드 선언 시도 -과 - 자원 문)

을 현재

을 적용하려는
@SuppressWarnings({"rawtypes","unchecked"}) 
theLists = new List<AnyType>[ nextPrime(2 * theLists.length) ]; 

이는 선언이 아니고 대입 표현식입니다. 그것은 작동하지 않습니다. 대신이 코드가 포함 된 메서드에 주석을 추가하십시오.

일단 그렇게하면 일반 배열을 만들 수 없다는 오류가 발생합니다. 주변에 관한 질문과 답변은 many입니다. 그것들을 읽으십시오.

당신은

theLists = (List<AnyType>[]) new List<?>[nextPrime(2 * theLists.length)]; 
+0

식별자가 예상되는 오류가 계속 발생합니다. 나는 원래의 질문을 업데이트로 편집했다. @Sotirios – user2820406

+0

@ user2820406 여전히 허용되지 않는 위치에서 특수 효과를 사용하고 있습니다. 할당 표현식이 아니라 생성자 선언에 주석을 달아 라. –

+0

나는 그것을 얻었다! 고맙습니다! – user2820406