本帖最后由 jincheker 于 2011-02-22 11:23:12 编辑

解决方案 »

  1.   

    在if前面初始化A <k,v> testListArray = new A <k,v>(arraySize);就可以了
    不需要使用命令行参数
      

  2.   

    LZ的问题不是是否初始化的问题,而是变量作用域的问题。Java中的作用域的边界是取决于{}。也就是说你在if{}中初始化的变量不能在if{}以外使用,因为在程序执行完if{}中的语句,出了{}后,{}中的变量都已经被标记为可回收的,也就是说testListArray已经死了,你无法引用。
      

  3.   


    generic的, 不能在不确定参数类型的情况下初始化吧?, 那个k,v应该是要指定成String, Integer这些东西才行吧?
      

  4.   


    如果是这样的话, 我这样的情况, 那是不是就应该把后面调用testListArray的语句都整个包含在if语句里面呢?
      

  5.   


    A testListArray=null;
    if (keyType.equals("int") && valueType.equals("string")) {
    testListArray = new A<Integer, String>(arraySize);
    }
    if (keyType.equals("string") && valueType.equals("int")) {
    testListArray = new A<String, Integer>(arraySize);
    }在这里声明就可以了
      

  6.   


    多谢了, 没想到可以用null