2012-09-05 41 views
7

Tôi muốn in tất cả các tên lớp trong một gói và cũng có thể in các thuộc tính tương ứng và các kiểu dữ liệu của chúng trong mỗi gói.Cách chuyển đổi loại Chuỗi thành loại Lớp trong java

Trong một mã, tôi có thể lấy tên lớp theo dạng chuỗi. Trong một mã khác, tôi có thể nhận các thuộc tính và loại dữ liệu của chúng bằng cách sử dụng Classname.class.getAttribute();

Tuy nhiên tôi muốn hợp nhất hai mã. Vì trong mã đầu tiên tôi nhận được tên lớp ở dạng chuỗi, tôi không thể sử dụng Classname.class.getAttribute() vì đây là Classname sẽ thuộc loại String.

Vì vậy, tôi muốn một phương thức sẽ chuyển đổi "Tên lớp" từ String thành loại Class.

Tôi đã thử Class.forName() nhưng nó không hoạt động.

+6

Vui lòng chỉ định cách Class.forName() "không hoạt động". – skiphoppy

+3

Nếu Class.forName() không hoạt động, rất có thể là a) tên lớp không đúng b) bạn nhận được thông báo lỗi nhưng không biết nó có nghĩa gì, do đó bạn đã bỏ qua nó. ;) –

+1

Đăng thông báo lỗi của bạn! và đăng mã mà bạn đã thử sử dụng 'Class.forName()' –

Trả lời

16
Class<?> classType = Class.forName(className); 

Hãy chắc chắn rằng className là tên lớp đầy đủ như com.package.class Ngoài ra, xin vui lòng chia sẻ thông điệp lỗi mà bạn thấy.

+0

Có, className không đủ điều kiện. Khi đặt tên đầy đủ, nó hoạt động :) Cảm ơn :) –

1

Nếu tên đủ điều kiện của một lớp khả dụng, bạn có thể lấy Lớp tương ứng bằng cách sử dụng phương thức tĩnh Class.forName().

Ví dụ:

Class c = Class.forName("com.duke.MyLocaleServiceProvider"); 

Lưu ý: Hãy chắc chắn rằng các tham số mà bạn cung cấp cho hàm là tên lớp đầy đủ như com.package.class

Check here cho bất kỳ tài liệu tham khảo.

EDIT:

Bạn cũng có thể thử sử dụng phương pháp loadClass().

Ví dụ:

ClassLoader cl; 
Class c = cl.loadClass(name); 

Nó được gọi bởi máy ảo Java để giải quyết tài liệu tham khảo lớp.

Cú pháp:

public Class<?> loadClass(String name) 
        throws ClassNotFoundException 

For details on ClassLoader check here

Here là một thực hiện ClassLoader.

0

Vui lòng thử như sau.

String str = "RequiredClassName";  
Class <?> Cref = Class .forName("PackageNaem."+str); 
Các vấn đề liên quan