定义String常量时出错

时间:2009-12-03 23:08:12

标签: java

鉴于:

public static final String XML_POLICY =
            "<?xml version="1.0"?>"
            +"<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">"
            + "<cross-domain-policy>"
            + "<allow-access-from domain="*" to-ports="*" />"
            + "</cross-domain-policy>";

我在

上遇到编译错误
"<?xml version="1.0"?>"

它预示着“;”。

+"<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">"

它说“找不到符号,符号:类xml和类dtds”

可能的原因是什么? IDE是Netbeans 6.8 Beta。

4 个答案:

答案 0 :(得分:3)

你需要逃避双引号 - 它也不仅仅是第一行。 doctype和allow-access-from行也需要它。

// Reformatted slightly to avoid scrolling :)
public static final String XML_POLICY =
  "<?xml version=\"1.0\"?>"
  + "<!DOCTYPE cross-domain-policy SYSTEM \"/xml/dtds/cross-domain-policy.dtd\">"
  + "<cross-domain-policy>"
  + "<allow-access-from domain=\"*\" to-ports=\"*\" />"
  + "</cross-domain-policy>";

另一种方法是在XML中使用单引号,这在大多数地方都很好,并使代码更易于阅读:

public static final String XML_POLICY =
    "<?xml version='1.0'?>"
    +"<!DOCTYPE cross-domain-policy SYSTEM '/xml/dtds/cross-domain-policy.dtd'>"
    + "<cross-domain-policy>"
    + "<allow-access-from domain='*' to-ports='*' />"
    + "</cross-domain-policy>";

请注意,没有关于此的Netbeans或XML特定内容。双引号用于表示字符串的开头和结尾,这就是为什么如果你想要一个字符串,你需要转义它。例如:

String x = "I said, \"Hello.\" The child laughed.";

Java中有各种其他转义序列 - 有关详细信息,请参阅section 3.10.6 of the language specification

答案 1 :(得分:2)

你必须逃避“在字符串内部:

public static final String XML_POLICY =     
        "<?xml version=\"1.0\"?>" + // etc etc

答案 2 :(得分:2)

答案 3 :(得分:0)

我认为问题得到了很好的回答,但只是一个注释/提示:
由于语法高亮,文本的一部分应该有不同的颜色,表明它不是文字的一部分 Netbeans 必须启用语法高亮(默认?)。 Stackoverflow也有语法高亮,只需查看问题中的代码(上图)。