Terkadang Anda ingin mengembalikan beberapa nilai dari suatu fungsi. Bagaimana ini biasanya dilakukan di Jawa?
Salah satu opsi adalah menggunakan array, seperti cuplikan Python ini yang mengembalikan daftar atau tuple:
value, success = read_unreliably()
if success:
print value
Opsi lain adalah mengembalikan hash / dict, seperti contoh JavaScript ini:
var result = readUnreliably()
if (result.success) {
alert(value);
}
Satu lagi adalah membuat objek khusus hanya untuk tujuan ini, seperti contoh Java ini:
ReadUnreliablyResult result = readUnreliably()
if (result.getSuccess()) {
System.out.println(result.getValue());
}
Tentu saja Anda juga dapat hanya menggunakan beberapa variabel global untuk menyimpan apa yang Anda butuhkan alih-alih membagikannya, tetapi katakan saja itu bukan pilihan.
java
coding-style
Mike M. Lin
sumber
sumber
Jawaban:
Menyakitkan.
Teknik-teknik ini tidak berfungsi dengan baik di Jawa; nilai-nilai harus diturunkan dari Object.
Ini paling umum, tapi membosankan untuk membuat semua kelas kecil itu. Di C ++ biasanya menggunakan std :: pair tetapi ini tidak umum dilakukan di Java.
Dengan Lombok , cukup mudah untuk membuat objek khusus kecil:
}
sumber
Ya, cara membuat
struct
/tuple
/record
di Java adalah dengan membuat kelas. Jika hanya untuk penggunaan internal, saya lebih suka menggunakan kelas struct-like yang tidak bisa diubah dengan bidang publik.Contoh:
Ini jauh lebih mudah dilakukan di Scala:
sumber
Tuple2[Boolean, Int]
. Meskipun dalam contoh khusus ini , Anda akan mengembalikanOption[Int]
.Sebagai contoh yang Anda berikan, melemparkan pengecualian akan menjadi cara paling standar untuk menanganinya:
Selain itu, jika Anda berusaha untuk memiliki fungsi yang "Do One Thing" fitur mengembalikan beberapa nilai kurang diperlukan, meskipun kadang-kadang nyaman.
sumber
Kami memiliki kelas generik Pair yang dapat menyimpan satu instance A dan satu instance B. Anda mungkin dapat membuat Triplet atau Quadruplet dengan cara yang sama.
sumber
Pair<String, Integer>
, apa artinya itu? apa yang mewakili nilai-nilai ini? Anda tidak mungkin tahu tanpa membaca implementasi metode ini.Di Jawa, fungsi Anda akan mengembalikan objek (atau mungkin nol jika terjadi kegagalan). Dengan cara ini, beberapa bagian data dapat dikembalikan.
sumber
Tidak ada cara eksplisit untuk mengembalikan beberapa variabel di Jawa, namun ada beberapa pendekatan:
sumber