Java注释可以跨多行扩展吗?
我使用GWT I18N,它依赖于带有参数的消息的注释。Java注释可以跨多行扩展吗?,java,annotations,Java,Annotations,我使用GWT I18N,它依赖于带有参数的消息的注释。 例如: @DefaultMessage("Here is a message <br/> with a param:{0}") String messageToLocalize(String param); @DefaultMessage(“这是一条带参数的消息:{0}”) 字符串消息本地化(字符串参数); 如果没有本地化翻译,将使用默认消息。 我有一些很长的字符串要处理,为了代码的可读性,我想在几行中键入这些字符串(对于呈
例如:
@DefaultMessage("Here is a message <br/> with a param:{0}")
String messageToLocalize(String param);
@DefaultMessage(“这是一条带参数的消息:{0}”)
字符串消息本地化(字符串参数);
如果没有本地化翻译,将使用默认消息。我有一些很长的字符串要处理,为了代码的可读性,我想在几行中键入这些字符串(对于呈现的消息,我不说多行) 我试过这个:
@DefaultMessage("Here is a long \
message <br/> with a \
param:{0}")
String messageToLocalize(String param);
@DefaultMessage(“这里有一个长消息\
消息
带有\
参数:{0}”)
字符串消息本地化(字符串参数);
它失败(GWT插件4.2和SDK 2.5.1),错误为“无效转义序列”
我错过什么了吗?它是对Java注释还是GWT的约束?(恐怕是这样,但在上面找不到任何内容)
有解决办法吗?
谢谢
编辑:给出第一个答案后,问题必须重新表述:是否可能,以及我应该使用哪个字符来显示续行(如果有)?
注释处理器显然需要告诉他一些事情。 我尝试了“\”,因为它是要在属性文件中使用的字符…
“+”也不起作用。Java不支持C样式的字符串行表示,因此您既不能在注释声明中也不能在代码的其他位置使用这种多行样式 如果要将单个字符串的行数相乘,必须执行以下操作:
@DefaultMessage("Here is a long " +
"message <br/> with a " +
"param:{0}")
@DefaultMessage(“这里有一个长消息”+
“消息
带有一个”+
“参数:{0}”)
尝试在编译时进行字符串连接,以便:
@DefaultMessage("Here is a long"+
"message <br/> with a " +
"param:{0}"")
@DefaultMessage(“这里有一个长消息”+
“消息
带有一个”+
“参数:{0}”“)
正如Andremoniy所说,必须使用Java风格进行剪切
但除此之外,我建议您查看i18nCreator。它允许您在属性文件中管理i18n,并自动生成以下消息和接口文件:
(还有一个maven插件:)@kaysush你在说什么?实际上我尝试了“\”,因为:a“\”是用于属性文件的字符(属性在多行上键入),b):char“+“不行。我会更新我的问题,让它更清楚。无论如何谢谢。@gerard怎么会
+
不起作用呢?它是Java标准的字符串连接运算符。看起来,您在复制我的示例时遗漏了一些内容…谢谢,但我只能确认“+”也不起作用。我假设这是注释预处理器的问题,与java copiler无关。@gerard使用+
符号时会出现什么错误?此外,您是否提到,您需要使用“
引号将字符串拆分为多个字符串?如果您只是将符号`(如您的问题中所述)替换为+`-当然,这最终不会起作用,我过了很长时间才回来……我尝试过,您是对的:拆分文本不仅使用+
(如我所做的那样)但是在双引号中包含每一行并与+
连接是很好的。谢谢,我会使用它。不过,遗憾的是,仅仅像JAVA中那样在语句结束(=注释结束)之前包含几行代码是行不通的(出于我的需要)。我也尝试过了,谢谢。(编译时间太晚了。这是注释预处理器的问题)。