Saya ingin menetapkan satu set variabel di java sebagai berikut:
int n1,n2,n3;
for(int i=1;i<4;i++)
{
n<i> = 5;
}
Bagaimana saya bisa mencapai ini di Jawa?
java
variables
dynamic-variables
Ashish Anand
sumber
sumber
Jawaban:
Ini bukan cara Anda melakukan sesuatu di Java. Tidak ada variabel dinamis di Java. Variabel Java harus dideklarasikan dalam kode sumber 1 .
Bergantung pada apa yang ingin Anda capai, Anda harus menggunakan array, a
List
atau aMap
; misalnyaRefleksi dapat digunakan untuk secara dinamis merujuk ke variabel yang telah dideklarasikan dalam kode sumber. Namun, ini hanya berfungsi untuk variabel yang merupakan anggota kelas (yaitu bidang statis dan instance). Ini tidak berfungsi untuk variabel lokal. Lihat contoh "cepat dan kotor" @ fyr.
Namun melakukan hal semacam ini secara tidak perlu di Java adalah ide yang buruk. Ini tidak efisien, kodenya lebih rumit, dan karena Anda mengandalkan pemeriksaan runtime, ini lebih rapuh. Dan ini bukan "variabel dengan nama dinamis". Ini lebih baik dijelaskan sebagai akses dinamis ke variabel dengan nama statis.
1 - Pernyataan itu sedikit tidak akurat. Jika Anda menggunakan BCEL atau ASM, Anda dapat "mendeklarasikan" variabel dalam file bytecode. Tapi jangan lakukan itu! Begitulah letak kegilaan!
sumber
Map<String, T>
, jangan mulai mengotak-atik kode Anda yang sebenarnya.Jika Anda ingin mengakses variabel semacam dinamika, Anda dapat menggunakan refleksi. Namun Refleksi tidak berfungsi untuk variabel lokal. Ini hanya dapat diterapkan untuk atribut kelas.
Contoh kasar dan cepat kotor adalah ini:
Anda perlu memperbaiki kode ini dengan berbagai cara, ini hanya contoh. Ini juga tidak dianggap sebagai kode yang baik.
sumber
Yang Anda butuhkan bernama array. Saya ingin menulis kode berikut:
sumber
Anda harus menggunakan
List
atauarray
sebagai gantinyaAtau
Atau bahkan lebih baik
sumber
Nama Variabel Dinamis di Jawa
Tidak ada hal seperti itu.
Dalam kasus Anda, Anda dapat menggunakan array:
Untuk
(name, value)
pasangan yang lebih umum , gunakanMap<>
sumber
Coba cara ini:
sumber
Kamu tidak. Hal terdekat yang dapat Anda lakukan adalah bekerja dengan Maps untuk mensimulasikannya, atau menentukan Objek Anda sendiri untuk ditangani.
sumber