标识符预期错误哈希表

时间:2014-12-02 01:31:37

标签: java hashtable identifier

我在这段代码中遇到了标识符预期错误:

 @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 个答案:

答案 0 :(得分:0)

注释只能出现在following locations

  
      
  • 方法声明(包括注释类型的元素)
  •   
  • 构造函数声明
  •   
  • 字段声明(包括枚举常量)
  •   
  • 正式和异常参数声明
  •   
  • 局部变量声明(包括for的循环变量)   try-with-resources语句的语句和资源变量)
  •   

您正在尝试在此处应用

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

这不是声明,而是赋值表达式。那不行。而是注释包含此代码的方法。

一旦这样做,您将收到一个无法创建通用数组的错误。关于这方面有many个问题和答案。阅读那些。

你可以做到

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