1、String a = new String(""+(i+1));加个()试试
2、authorities 中有 12、13行这2个对象?authorities长度为4?这不可能啊 

解决方案 »

  1.   

    1.  不会报错的,""+i+1中,+1会以字符串的形式串接到i后面,你之所以报错是因为你的局部变量重名,换个a1就好了。
    2.没明白你什么意思,你在17行给authorities 重新赋值,有什么疑问?你在哪里看的指向什么什么。
      

  2.   

    String a = new String(""+i);String a = new String(""+i+1); 
    那是你写重复了。 你循环的意思和这样写的意思完全不一样。
     
       authorities = new ArrayList<Authority>(); 这个重新实例化了。
      

  3.   

    for循环中不是会创建10局部变量名为a的局部变量么,这种为什么不会重名?
      

  4.   

    只是会创建10个对象,并且给他们分配10个内存地址。变量名a 只是对象的引用,你new了两个String就不能用相同的引用。
      

  5.   

    1:你在一个大括号里命名两个String 变量都是a当然报错了!!
          而开始的时候每次执行完循环String a都会被回收根本不存在同时存在10个局部变量a
    2:static静态块只在编译完代码后执行一次
         关于你问的问题也没太看懂
      

  6.   

    1.变量名重复了,肯定报错。
    2.你把authorities传递给user方法,传递的是一个引用(又到了java值传递还是引用传递的无止尽的争论当中了,BUT!你不用管)//你的user方法也许是这么定义的
    class User{
    User(String s,List<T> l){
    //some code
    }
    }
    /*
    你把authorities所指向的那个对象的地址告诉了l。然后,l也指向了那个对象,之后后面你的authorities怎么变,l都不受影响,你的User方法使用的是l方法
    */