尝试在Console应用程序的main方法中声明Java中的字符串。
String s = "this is some text";
我得到一个红色下划线,说'class'或'interface'。
如果我将代码更改为
String s = new String("this is some text");
一切正常,或至少代码编译。使用JDK 1.8并最近将IDE升级到版本2016.2.4。
这仅在声明新String时发生,所有其他类型的声明和初始化都在不声明新实例的情况下工作,即
int i = 0;
任何人都知道为什么第一个声明不起作用?
尝试写入控制台时会出现类似的行为,
System.out.println("this is some text");
'text'一词用红色下划线表示'class'或'interface'。
编辑:按要求提供全班
package Sandbox;
public class Main {
public static void main(String[] args) {
System.out.println("this fails");
}
}
然而
package Sandbox;
public class Main {
public static void main(String[] args) {
System.out.println(new String("this works"));
}
}
请参阅IDE中实际代码的下方截图。欢迎评论。
答案 0 :(得分:2)
看起来像IntelliJ中的语言注入问题。 https://www.jetbrains.com/help/idea/2016.2/using-language-injections.html
禁用语言注入。这应该可以解决你的问题。
此处描述了println方法和字符串的类似问题,并通过从字符串注入取消注册println来解决:https://intellij-support.jetbrains.com/hc/en-us/community/posts/206836685-System-out-println-hello-analyze-error