以下两种情况似乎工作:内部类和字符串在Java中
public class A {
private class B {
public static final String str = "str";
}
}
public class A {
private static class B {
public static final String str = new String("str");
}
}
但是下面给出在评论中指定的错误:
public class A {
private class B {
//The field str cannot be declared static;
//static fields can only be declared in static or top level types
public static final String str = new String("str");
}
}
为什么它被允许在前面两种情况以及为什么它会导致上一个问题?
它不仅仅是'new String(...)'。它是任何不是编译时常量表达式的*初始值设定项。 –
对。 'new String(“literal”)'可能被编译器认为是“安全的”并且被允许,但是这样你就没有必要的通用规则。 –