2012-08-04 32 views
5

Trong javascript, bạn có thể tham chiếu thuộc tính của đối tượng bằng ký hiệu dấu chấm hoặc ký hiệu ngoặc đơn. Điều này có thể hữu ích bằng cách sử dụng biến chuỗi chẳng hạn như:Ký hiệu Khung Java?

var myObject = { hello: "world" }; 
var prop = "hello"; 

// both will output "world". 
console.log(myObject[ prop ]); 
console.log(myObject.hello); 

Có cú pháp tương tự trong java để truy cập các thuộc tính đối tượng sử dụng biến chuỗi, tương tự như ký hiệu khung của javascript không?

+2

Điều gần nhất với câu trả lời của bạn sẽ là thông qua [phản ánh] (http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getField (java.lang.String)), nhưng điều này có lẽ không nên được thông báo. Không có tương tự trực tiếp vì Java tương đối nghiêm ngặt khi gõ. – oldrinb

+0

Quan trọng hơn tôi nghĩ là câu hỏi là "tại sao?". Nếu nó chỉ là sự tò mò thì sự phản chiếu hoặc sử dụng một bản đồ băm bình thường sẽ làm. Nếu không, chúng ta cần một bối cảnh tốt hơn của vấn đề. –

Trả lời

1

Không, không có cú pháp như vậy trong Java, nhưng có một API (reflection) cho phép bạn làm điều đó, mặc dù theo một cách ít trực tiếp hơn.

1

Không có cú pháp tương tự trong java hoặc bất kỳ cách trực tiếp nào để thực hiện việc này.

java không cung cấp API phản chiếu cho phép bạn truy vấn thuộc tính/giao diện của đối tượng khi chạy bằng cách sử dụng Strings đại diện cho ví dụ: thuộc tính và phương thức của đối tượng.

Bạn cũng có thể lưu trữ các thuộc tính (khóa, giá trị) trong cấu trúc dữ liệu chẳng hạn như HashMap, ánh xạ Strings cho các đối tượng.

4

Không, không có. Về điều gần nhất có thể là sử dụng sự phản chiếu, nhưng điều đó rất khó khăn để nói điều ít nhất. Bạn phải tra cứu Field và sau đó nhận giá trị của cá thể cho nó.

Field property = myInstance.getClass().getDeclaredField("prop"); 
Object value = property.get(myInstance); 

Không phải những gì bạn đang tìm kiếm, tôi biết, nhưng nó gần nhất không may.

1

1. Tôi không nghĩ có bất kỳ cú pháp nào giống như vậy trong java.

2. Nhưng tôi muốn sử dụng cặp Key-Value và số đó là Map.

3.Reflection API cũng có thể được sử dụng trong trường hợp này.

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