Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Độ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
Nội dung xem thử
Mô tả chi tiết
Độ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
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. 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ản
chiế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ách
Java Reflection API (API phản chiếu Java) cho phép bạn kết nối vào các đối tượng
trong 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ới
thiệ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ông
tin 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ều
nà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ới
truy cập trực tiếp.
Đừng bỏ lỡ phần còn lại của loạt bài này
Phầ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ới
siê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ập
bở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ên
trong JVM. Sự phản chiếu cho phép bạn truy cập trong thời gian chạy đến một loạt
cá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ác
phươ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 sao
bạ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ình
khi 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ột
phí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ớp
diễ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ạy
từ 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. Thay
và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 load
Class clas = null;
try {
clas = Class.forName(name);