Danh mục

Động lực học lập trình Java, Phần 2: Giới thiệu sự phản chiếu Sử dụng thông tin lớp trong thời gian chạy để khởi động việc lập trình của bạn

Số trang: 20      Loại file: pdf      Dung lượng: 259.94 KB      Lượt xem: 7      Lượt tải: 0    
Jamona

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Dennis Sosnoski, Nhà tư vấn, Sosnoski Software Solutions, Inc. Tóm tắt: Sự phản chiếu cho phép truy cập mã của bạn tới thông tin bên trong đối với các lớp được nạp vào JVM và cho phép bạn viết mã để làm việc với các lớp được lựa chọn trong quá trình thực hiện, không phải trong mã nguồn. Điều này tạo cho sự phản chiếu một công cụ quan trọng để xây dựng các ứng dụng linh hoạt. Nhưng xem ra -- nếu được sử dụng không thích hợp, sự phản chiếu có thể tốn kém. ...
Nội dung trích xuất từ tài liệu:
Động lực học lập trình Java, Phần 2: Giới thiệu sự phản chiếu Sử dụng thông tin lớp trong thời gian chạy để khởi động việc lập trình của bạn Động lực học lập trình Java, Phần 2: Giới thiệu sự phản chiếuSử dụng thông tin lớp trong thời gian chạy để khởi động việc lập tr ình của bạnDennis Sosnoski, Nhà tư vấn, Sosnoski Software Solutions, Inc.Tóm tắt: Sự phản chiếu cho phép truy cập mã của bạn tới thông tin bên trong đốivới các lớp được nạp vào JVM và cho phép bạn viết mã để làm việc với các lớpđược lựa chọn trong quá trình thực hiện, không phải trong mã nguồn. Điều này tạocho sự phản chiếu một công cụ quan trọng để xây dựng các ứng dụng linh hoạt.Nhưng xem ra -- nếu được sử dụng không thích hợp, sự phản chiếu có thể tốnkém. Trong Phần 2 của loạt bài của mình về bản chất của nền tảng Java, nhà tưvấn phần mềm Dennis Sosnoski đưa ra một sự giới thiệu về cách sử dụng sự phảnchiếu, cũng như xem xét một số các chi phí liên quan. Bạn cũng sẽ tìm hiểu cáchJava Reflection API (API phản chiếu Java) cho phép bạn kết nối vào các đối tượngtrong thời gian chạy.Trong Động lực học lập trình Java, Phần 1, tôi đã cung cấp cho bạn một sự giớithiệu về các lớp lập trình Java và nạp lớp. Bài viết đó mô tả một số tư liệu thôngtin rộng lớn theo định dạng lớp nhị phân Java. Trong bài viết tháng này, tôi sẽtrình bày những điều cơ bản về việc sử dụng Java Reflection API để truy cập và sửdụng một số thông tin như vậy trong thời gian chạy. Để giúp duy trì những điềunày thú vị với các nhà phát triển, những người đã biết những điều cơ bản của sựphản chiếu, tôi sẽ trình bày một cái nhìn về cách so sánh hiệu năng phản chiếu vớitruy cập trực tiếp.Đừng bỏ lỡ phần còn lại của loạt bài nàyPhần 1, Các lớp Java và nạp lớp (04.2003)Phần 3, Ứng dụng sự phản chiếu (07.2003)Phần 4, Chuyển đổi lớp bằng Javassist (09.2003)Phần 5, Việc chuyển các lớp đang hoạt động (02.2004)Phần 6, Các thay đổi hướng-khía cạnh với Javassist (03.2004)Phần 7, Kỹ thuật bytecode với BCEL (04.2004)Phần 8, Thay thế sự phản chiếu bằng việc tạo mã (06.2004)Sử dụng sự phản chiếu khác với lập trình Java tiêu chuẩn ở chỗ nó làm việc vớisiêu dữ liệu -- dữ liệu mô tả dữ liệu khác. Kiểu siêu dữ liệu cụ thể được truy cậpbởi sự phản chiếu của ngôn ngữ Java là sự mô tả về các lớp và các đối tượng bêntrong JVM. Sự phản chiếu cho phép bạn truy cập trong thời gian chạy đến một loạtcác thông tin lớp. Thậm chí nó còn cho phép bạn đọc và viết các trường và cácphương thức gọi của một lớp được chọn trong thời gian chạy.Sự phản chiếu là một công cụ mạnh. Nó cho phép bạn xây dựng mã linh hoạt, mãnày có thể được lắp ráp trong thời gian chạy mà không đòi hỏi các liên kết mãnguồn giữa các thành phần. Nhưng một số khía cạnh của sự phản chiếu có thể khóhiểu. Trong bài này, tôi sẽ đi vào những lý do tại sao bạn có thể không muốn sửdụng sự phản chiếu trong các chương trình của bạn, cũng như những lý do tại saobạn muốn. Sau khi bạn biết các sự thỏa hiệp, bạn có thể quyết định cho chính mìnhkhi những lợi ích có giá trị hơn những hạn chế.Lớp của những người mới bắt đầuĐiểm khởi đầu để sử dụng sự phản chiếu luôn luôn là một cá thể java.lang.Class.Nếu bạn muốn làm việc với một lớp định sẵn, thì ngôn ngữ Java cung cấp mộtphím tắt dễ dàng để có được cá thể Class trực tiếp:Class clas = MyClass.class;Khi bạn sử dụng kỹ thuật này, tất cả các công việc liên quan đến việc nạp các lớpdiễn ra ở hậu trường. Tuy nhiên, nếu bạn cần phải đọc tên lớp trong thời gian chạytừ một số nguồn bên ngoài, thì cách tiếp cận này không phải là sắp thực hiện. Thayvào đó, bạn cần phải sử dụng một trình nạp lớp để tìm thông tin lớp. Dưới đây làmột cách để thực hiện điều đó:// name is the class name to loadClass clas = null;try { clas = Class.forName(name);} catch (ClassNotFoundException ex) { // handle exception case}// use the loaded classNếu lớp đã được nạp, bạn sẽ tìm lại các thông tin Class hiện có. Nếu lớp chưađược nạp, trình nạp lớp sẽ nạp nó bây giờ và trả về cá thể lớp vừa mới được xâydựng.Sự phản chiếu trên một lớpĐối tượng Class mang đến cho bạn tất cả các kết nối cơ bản để truy cập phảnchiếu đến siêu dữ liệu lớp. Siêu dữ liệu này bao gồm các thông tin về chính lớp đó,chẳng hạn như gói và siêu lớp của lớp đó, cũng như các giao diện được lớp đótriển khai thực hiện. Nó cũng bao gồm các chi tiết về các hàm tạo, các trường vàcác phương thức được lớp đó xác định. Các mục sau cùng này là những thứ hầunhư thường được sử dụng trong lập trình, vì vậy tôi sẽ đưa ra một số ví dụ về làmviệc với chúng sau trong phần này.Hỏi chuyên gia: Dennis Sosnoski về các vấn đề JVM và bytecodeĐối với các ý kiến hay các câu hỏi về tài liệu được trình bày trong loạt bài này,cũng như bất cứ điều gì khác có liên quan đến Java bytecode, định dạng lớp nhịphân Java hoặc các vấn đề JVM chung, hãy truy cập vào diễn đàn thảo luận JVMvà Bytecode, do Dennis Sosnoski kiểm soát.Đối với mỗi một trong b ...

Tài liệu được xem nhiều: