java 字符串文字筛选_拜托,Java。 最终是否支持多行字符串文字
java 字符串文字篩選
我了解Java語言的思想很難以向后兼容的方式進行維護。 我知道JDK API(例如集合)的想法很難打破。 是。
我不明白為什么Java 仍然沒有多行字符串文字。
您多久編寫一次這樣的JDBC代碼(或您想要嵌入到Java中的任何其他外部語言或標記,例如JSON或XML)?
try (PreparedStatement s = connection.prepareStatement("SELECT * "+ "FROM my_table "+ "WHERE a = b " )) {... }怎么了
- 語法正確性 ,即不要忘記在每行的末尾添加空格
- 宿主語言的樣式與外部語言的樣式 ,請確保上面的代碼看起來用Java格式看起來“不錯”,但對于使用方服務器端則沒有格式化
- SQL注入 ,我們不是教導我們的下輩不要在SQL中執行這種字符串連接以防止SQL注入嗎? 當然,以上內容仍然是安全的,但是是什么原因使經驗不足的維護者無法嵌入用戶輸入呢?
今天,我正在使用Xtend編寫一些代碼, Xtend是一種非常有趣的語言,可以編譯成Java源代碼。 Xtend對模板非常有用(例如,用于生成jOOQ的Record1 – Record22 API)。 我注意到多行字符串的另一個非常好的功能:
無需逃脫!
Xtend中的多行字符串以三撇號終止。 例如
// Xtend val regex = '''import java\.lang\.AutoCloseable;'''是的,以上是有效的Java正則表達式。 匹配AutoCloseable類型的導入時,我在轉義點。 我不必在普通字符串中執行繁瑣的兩次轉義操作,就可以告訴Java編譯器反斜杠實際上是反斜杠,而不是Java轉換了以下字符:
// Java String regex = "import java\\.lang\\.AutoCloseable;";所以……轉換為我們最初SQL示例,我真的很想寫這個:
try (PreparedStatement s = connection.prepareStatement('''SELECT *FROM my_tableWHERE a = b''' )) {... }具有很大的優勢:字符串插值(甚至PHP都有)!
String tableName = "my_table"; int b = 1; try (PreparedStatement s = connection.prepareStatement('''SELECT *FROM ${tableName}WHERE a = ${b}''' )) {... }小但非常有效的改進
這將是非常小的(就語言復雜性預算而言:只是一個新令牌),但是對于我們所有人都在Java中嵌入外部語言(SQL,XML,XPath,Regex等)的非常有效的改進。 我們做了很多。 我們討厭它。
它不必像Xtend的多行字符串文字那樣強大( 它確實與用于格式設置和模板化表達式的空白管理結合在一起 )。 但這將是一個開始。
請把它作為新年的決議! :)
翻譯自: https://www.javacodegeeks.com/2016/01/please-java-finally-support-multiline-string-literals.html
java 字符串文字篩選
總結
以上是生活随笔為你收集整理的java 字符串文字筛选_拜托,Java。 最终是否支持多行字符串文字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑话术语(电脑术语是什么意思)
- 下一篇: 西门子PLC常见的通讯方法电脑是如何通讯