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