【问题标题】:Commented code gives compilation error in Java?注释代码在 Java 中给出编译错误?
【发布时间】:2015-02-14 11:42:21
【问题描述】:

您好,我正在创建简单的程序,但在注释代码中出现了看不见的编译错误。我的代码如下:

public class Static_Method_Call
{               
    public static Character character=getMe();

    public static void main(String[] args)
    {
        System.out.println("Inside main() 1 : "+character); 
        //Static_Method_Call.character=new Character('\u000d'); 
        //System.out.println("Inside main() 2 : "+character);
    }

    static
    {
        System.out.println("Inside static block : "+character);
        Static_Method_Call.character=new Character('\u003d');       
    }

    public static Character getMe()
    {
        System.out.println("Inside getMe() : "+character);
        return new Character('\u002d');
    }
}

错误如下:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
Invalid character constant

这个错误在 Java 中是什么意思?

【问题讨论】:

  • 你给角色一个方法的值。这是不可能的,但您的程序中还有更多错误。
  • @user1758777 不,OP 将变量character 分配给静态方法getMe() 的返回值,这是完全有效的。
  • 我的错。读错代码忽略我的评论

标签: java compiler-errors


【解决方案1】:

\u000d 是一个 Unicode 字符,代表 CR 特殊字符。即使编译器对源代码进行转换之前,这个字符也会被预处理并导致源代码无效。所以我猜在预处理时,注释行看起来像:

//Static_Method_Call.character=new Character('
 ');

因此编译器错误。您可以使用\r 添加回车。

【讨论】:

  • 基本上是这样,但在cmets中应该不是问题;我猜这是 Java 解析器的一个小问题。
  • 当这消除了编译问题,但没有回答手头的问题。
【解决方案2】:

\u000d 是一个换行符,所以下一行以 ' 开头,它是未闭合的,这就是它所抱怨的。这是在这里解释A unicode newline character(\u000d) in Java

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
  • 2011-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-23
  • 1970-01-01
相关资源
最近更新 更多