2010-07-28 42 views
8

Trong Java, có thể truy cập một cá thể của lớp tĩnh (lồng nhau) bằng cách sử dụng sự phản chiếu không?Java - Nhận tham chiếu đến một lớp tĩnh sử dụng sự phản chiếu

Giả sử tôi có 2 loại sau đây được định nghĩa trong gói Package1.SubPackage.SubSubPackage:

public class MyMainClass { 
    public static class SalesObjectGrouper1 { 
     public static final GrouperContext CONTEXT = new GrouperContext("MyDate"); 
    } 

    private static class SalesObjectGrouper2 { 
     public static final GrouperContext CONTEXT = new GrouperContext("MyDate"); 
    } 
} 

Nếu tôi chạy đoạn mã sau:

try { 
    xyz = Class.forName("Package1.SubPackage.SubSubPackage.MyMainClass.SalesObjectGrouper1"); 
} catch(ClassNotFoundException ex) { 
    // always hit the error 
} 

nó sẽ báo lỗi chứng tỏ đẳng cấp không thể được tìm thấy. Điều này có thể được thực hiện?

+0

btw sử dụng Class.forName() không sử dụng sự phản chiếu. – stacker

Trả lời

16

Các bạn đã thử đề cập đến các lớp lồng nhau như

MyMainClass$SalesObjectGrouper1 

lớp lồng nhau được nội tên ContainingClassName $ NestedClassName

3

Để tránh hacks trong các bản đồ của các lớp học ngôn ngữ Java trên các lớp thời gian chạy Java, bạn có thể sử dụng Class.getDeclaredClasses. Sử dụng sự phản chiếu thường là một sai lầm. Đối phó với các lớp lồng nhau không có vẻ là một dấu hiệu tốt.

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