本文介紹了批注中特定于平臺(tái)的換行符的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問題描述
我希望在批注元素中提供的String
中使用特定于平臺(tái)的換行符。
我應(yīng)該使用下面的什么來(lái)代替???
?
@Scenario(title = "This text should match multiline text from file stored on disk " + ???
+ "saved with platform specific newline character")
當(dāng)我將???
替換為System.lineSeparator()
時(shí),我收到編譯錯(cuò)誤Attribute value must be constant
。有什么想法嗎?
推薦答案
不能將非常數(shù)值用作批注的屬性。傳遞給批注的字符串必須是compile-time constant as specified in JLS §15.28。
在類文件中,注釋屬性直接作為元數(shù)據(jù)與注釋聲明存儲(chǔ)在一起。因此,從概念上講,無(wú)法在運(yùn)行時(shí)解析特性,因?yàn)榻馕鲆蕾囉谶\(yùn)行時(shí)的屬性是必需的。
作為替代方法,您應(yīng)該對(duì)批注的屬性進(jìn)行后處理,例如,只需將字符串的換行符替換為運(yùn)行時(shí)的System.getProperty("line.separator")
值。
這篇關(guān)于批注中特定于平臺(tái)的換行符的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,