标题中提到的不赋值是指在第一次调用时再赋值方式。

解决方案 »

  1.   

    语法规定吧?
    如果没有这个规定,方法的形式参数就没有办法是final的了。
      

  2.   

    楼上说的对.接口中的常量要在定义的时候就要初始化。
    类的final属性可以不立即初始化。等用的时候再初始化,也就是在构造方法中对其初始化。
    方法中的final变量也可以不立即初始化,用的时候再初始化。只能初始化一次。
      

  3.   

    接口中的常量默认为static final类型的,是必须赋值的吧。
      

  4.   

    这种说法是错误的,因为接口的field是static final
    声明final的至少初始化一次
    声明static不能在实例化的时候初始化(也就是构造器也不能初始化它)
    而且接口又没static块,所以必须在声明的时候就初始化它
      

  5.   

    按你们的想法在 Eclipse 里面试验一下,我觉得 Eclipse 最专业,它出错最少(当然我也发现过一次它在包内可见的类的查找上出错,不过只是Eclipse JDT 的问题不是编译器的问题,因为它还是可以编译通过的)。这是技术上的。另外说概念上的,接口只描述功能而不提供任何实现,这才是它的正确用途(当然你可以在一个常量初始化时定义另外一个匿名内部类,这不算接口本身实现)。我可以写出下面这样的,但这个 A 实现了 Int 但不是 Int 本身提供了实现代码:
    public interface Int {
        public static final Int A = new Int() {
        };
    }
      

  6.   


    public interface Test {
    public final static int i;

    static {
    i = 3;
    }
    }public class Test {
    public final static int i;
    static {
    i = 1;
    }
    }楼主认为interface可以这样初始化?
      

  7.   

    后边那个是可以的,但没明白java何以允许这么做?