var map = new Object();
map["a"] = 1;
map["b"] = 2;
map["c"] = 3;
相反,您可能會寫
var map = { "a":1, "b":2, "c":3 };
具體來說,當將復雜參數傳遞給API函數時,這實際上是一種非常方便的語法。
Java中的這些東西呢?
我最近發布了一種解決方法,您可以在這里使用Arrays.asList(…)創建“列表文字”:
http://blog.jooq.org/2011/10/28/javas-arrays-aslist-is-underused/
這樣就可以了。 在分配數組時,還可以使用數組文字構造數組。 但是您不能將數組文字傳遞給方法:
// This will work:
int[] array = { 1, 2, 3 };// This won't:
class Test {public void callee(int[] array) {}public void caller() {// Compilation error here:callee({1, 2, 3});}
}
Brian Goetz在lambda-dev上提到了各種文字
錯過了很長一段時間后,我很高興閱讀lambda-dev郵件列表中的Brian Goetz關于它們的提及:
http://mail.openjdk.java.net/pipermail/lambda-dev/2012-May/004979.html
他列出的想法是:
#[ 1, 2, 3 ] // Array, list, set
#{ "foo" : "bar", "blah" : "wooga" } // Map literals
#/(\d+)$/ // Regex
#(a, b) // Tuple
#(a: 3, b: 4) // Record
#"There are {foo.size()} foos" // String literal
不幸的是,他還添加了以下免責聲明:
并不是說我們會立即(或永遠)擁抱所有這些
顯然,在Java 8當前Java語言發展的現階段,他不能保證將來會增加什么。 但是從jOOQ的角度來看,能夠聲明元組和記錄文字(具有適當的支持語言的支持,支持這種類型!)的想法非常令人激動。 想象一下選擇任意元組/記錄及其關聯的索引/類型,列/類型對。 想象一下在Java或Scala中這樣的構造(使用jOOQ):
// For simplicity, I'm using Scala's val operator here,
// indicating type inference. It's hard to guess what true
// record support in the java language should look like
for (val record : create.select(BOOK.AUTHOR_ID.as("author"), count().as("books")).from(BOOK).groupBy(BOOK.AUTHOR_ID).fetch()) {// With true record support, you could now formally extract// values from the result set being iterated on. In other// words, the formal column alias and type is available to// the compiler:int author = record.author;int books = record.books;
}
顯然,這只是推測,但是您可以看到,由于Java語言具有真正的元組/記錄支持,因此Java Universe中將釋放許多功能,這對所有現有的庫和API都有很大的影響
敬請關注!
參考: Java,SQL和AND JOOQ博客上的JCG合作伙伴 Lukas Eder 用Java數組,列表,設置,映射,元組和記錄文字 。
翻譯自: https://www.javacodegeeks.com/2012/06/array-list-set-map-tuple-record.html