Saya melihat beberapa kode Java hari ini, dan saya menemukan beberapa sintaks yang aneh:
public class Sample {
public int get()[] {
return new int[]{1, 2, 3};
}
}
Saya pikir itu tidak dapat mengkompilasi dan ingin memperbaiki apa yang saya pikir salah ketik, tetapi kemudian saya ingat kompiler Java benar-benar menerimanya!
Bisakah seseorang membantu saya memahami apa artinya? Apakah ini serangkaian fungsi?
Jawaban:
Ini adalah metode yang mengembalikan file
int[]
.sumber
public int[] foo()[][] {
dan membuat mata orang berdarah.Itu pertanyaan yang lucu. Di java Anda bisa mengatakan
int[] a;
, jugaint a[];
.Dari perspektif ini, untuk mendapatkan hasil yang sama hanya perlu memindahkan
[]
dan menulis
public int[] get() {
.Sepertinya kode tersebut berasal dari obfuscator ...
sumber
Karena ada tag C, saya akan menunjukkan bahwa notasi serupa (tapi tidak identik) dimungkinkan di C dan C ++:
Di sini fungsi
f
mengembalikan pointer ke array 10 int.Java tidak membutuhkan tanda bintang dan tanda kurung.
sumber
f()[]
artinya seperti(*f())
.sintaks java memungkinkan hal berikut:
dan juga
yang terlihat lebih fmiliar berasal dari sintaks gaya c.
begitu juga, dengan sebuah fungsi, namanya bisa muncul sebelum atau sesudah [], dan tipenya tetap int []
sumber