2010-06-14 84 views
15

Trong java, tôi có thể sử dụng đối tượng lớp để tự động khởi tạo các lớp thuộc loại đó không?lớp khởi tạo từ đối tượng lớp

tức là tôi muốn một số chức năng như thế này.

Object foo(Class type) { 
    // return new object of type 'type' 
} 

Trả lời

24

Bạn có thể sử dụng Class.newInstance:

Object foo(Class type) 
throws InstantiationException, IllegalAccessException { 
    return type.newInstance(); 
} 

... nhưng mà giả định có một constructor không có đối số. Một tuyến đường mạnh mẽ hơn là đi qua Class.getConstructor hoặc Class.getConstructors, sẽ đưa bạn vào sử dụng công cụ Phản chiếu trong gói java.lang.reflect.

2

Sử dụng:

type.newInstance() 

Đối với việc tạo ra một thể hiện bằng cách sử dụng costructor trống rỗng, hoặc sử dụng các phương pháp type.getConstructor (..) để có được các nhà xây dựng có liên quan và sau đó gọi nó.

1

Có, nó được gọi là Phản ánh. bạn có thể sử dụng phương thức Class newInstance() cho việc này.

+0

Bạn có thể đọc thêm tại địa chỉ: http://java.sun.com/docs/books/tutorial/reflect/index.html Bài đăng này cũng có thông tin rất tốt: http://stackoverflow.com/questions/37628/what-is-reflection-and-why-is-it-useful – RonK

0

sử dụng phương thức newInstance().

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