所以我已经尝试搜索答案,但是对于这个错误信息,我找到的答案与我的问题无关。
这里是问题所在。 为什么这段代码:
Case 1)
这个非常有效:
这也非常有效:
情况3)
有人可以解释一下为什么吗?我正在使用IntelliJ IDEA和Java 1.8.0_151。
这三种情况都在做同样的事情(将两个字符串拼接在一起),但第一个直接拼接,第二个和第三个是“间接”拼接。
这里是问题所在。 为什么这段代码:
Case 1)
public class A {
private final String A;
private final String B;
private final String C = A + B;
public A(String A, String B) {
this.A = A;
this.B = B;
}
}
对于行 private final String C = A + B;
,它显示以下错误:
java: variable A might not have been initialized
java: variable B might not have been initialized
这个非常有效:
但是这个非常有效:
情况2)
public class K {
private final String K;
private final String L;
private final String M = kPlusL();
public K(final String K, final String L) {
this.K = K;
this.L = L;
}
private String kPlusL() {
return K + L;
}
}
这也非常有效:
情况3)
public class O {
protected final String O;
protected final String P;
public O(final String O, final String P) {
this.O = O;
this.P = P;
}
}
public class Q extends O {
private final String Q = O + P;
Q (final String O, final String P) {
super(O, P);
}
}
有人可以解释一下为什么吗?我正在使用IntelliJ IDEA和Java 1.8.0_151。
这三种情况都在做同样的事情(将两个字符串拼接在一起),但第一个直接拼接,第二个和第三个是“间接”拼接。