2009-06-03 35 views
15

Chẳng hạn như trong PHP:Java có hỗ trợ các biến biến không?

<?php 
$a = 'hello'; 
$$a = 'world'; 

echo $hello; 
// Prints out "world" 
?> 

tôi cần phải tạo ra một số không rõ của HashMaps khi đang bay (được đặt vào mỗi một ArrayList). Hãy nói rằng nếu có một cách dễ dàng hơn hoặc Java hơn. Cảm ơn.

+12

đầu tôi đau, cái quái gì thế? –

Trả lời

12

Điều tốt nhất bạn có thể làm là có HashMap của HashMaps. Ví dụ:

Map<String,Map<String,String>> m = new HashMap<String,Map<String,String>>(); 
// not set up strings pointing to the maps. 
m.put("foo", new HashMap<String,String>()); 
0

Biến không được gọi là biến của nó trong java.

Được gọi là sự phản chiếu của nó.

Xem tài liệu gói java.lang.reflect để biết chi tiết.

Bạn có thể làm tất cả những thứ như vậy bằng cách sử dụng sự phản chiếu.

Bestoes,

jrh.

+2

Vâng, bạn có thể, nhưng nó không phải là một ý tưởng tốt. Vì nhiều lý do, đặc biệt là loại an toàn và hiệu suất, phản ánh thường chỉ nên được sử dụng như một phương sách cuối cùng. Ở đây chỉ cần sử dụng một Bản đồ (như được mô tả trong các câu trả lời khác) là thích hợp hơn. – sleske

+1

Không, OP muốn tạo các biến có tên được xác định khi chạy. Nhưng không có tên biến nào trong thời gian chạy. – newacct

1

Java không hỗ trợ những gì bạn vừa làm trong PHP.

Để làm điều gì đó tương tự, bạn chỉ cần thực hiện List<Map<>> và lưu trữ HashMap s trong đó. Bạn có thể sử dụng số HashMap của HashMaps.

Một 'biến biến' trong Java là một mảng hoặc Danh sách hoặc một số loại cấu trúc dữ liệu có kích thước khác nhau.

1

số Bạn sẽ làm điều gì đó như

List<Map<String,String> myMaps = new ArrayList<Map<String,String>>() 

và sau đó trong vòng lặp của bạn, bạn sẽ làm gì:

Map<String,String> newMap = new Hashtable<String,String>(); 
//do stuff with newMap 
myMaps.add(newMap); 
0

Bạn Không thể!

Không có cách nào trực tiếp cho việc này. Mảng, phản chiếu, vv có thể hữu ích.

Các vấn đề liên quan