Computer >> Máy Tính >  >> Lập trình >> Java

Việc sử dụng mệnh đề yêu cầu trong tệp thông tin mô-đun trong Java 9 là gì?


A mô-đun là một khái niệm quan trọng được giới thiệu trong Java 9 . Bằng cách sử dụng khái niệm này, chúng tôi có thể chia mã thành các thành phần nhỏ hơn được gọi là mô-đun . Do đó, mỗi mô-đun có trách nhiệm riêng và khai báo sự phụ thuộc của nó vào các mô-đun khác để hoạt động bình thường. Để khai báo một mô-đun, chúng tôi cần bao gồm " module-info.java "tệp tới mã nguồn gốc.

Có một số loại " yêu cầu "mệnh đề trong" thông tin mô-đun "tệp

1) yêu cầu : Theo mặc định, một mô-đun không biết các mô-đun khác có trong đường dẫn mô-đun . Vì vậy, cần phải thêm một dòng trong module-info.java của chúng tôi:" request "mỗi khi chúng tôi muốn truy cập vào một mô-đun khác.

module com.tutorialspoint.gui {
   requires com.tutorialspoint.model;
   requires java.desktop;
}

2) yêu cầu : bắc cầu Trong trường hợp mô-đun của chúng tôi " com.tutorialspoint.model ":trả về loại giao diện đã xuất của mô-đun" com.core ". Do đó, bất kỳ mô-đun nào muốn sử dụng thì mô-đun đó cũng yêu cầu" com.core "để truy cập các lớp của mô-đun thứ hai này có lỗi biên dịch. Java 9 cho phép từ khóa " bắc cầu "để chỉ ra điều đó bằng độ nhạy. Người dùng" com.tutorialspoint.model "có thể truy cập" com. cốt lõi "cho phép dễ dàng thay đổi việc triển khai.

module com.tutorialspoint.model {
   requires transitive com.core;
}

3) yêu cầu tĩnh : Từ khóa " yêu cầu tĩnh "đại diện cho khái niệm về sự phụ thuộc tùy chọn mà một mô-đun như vậy là:

  • bắt buộc khi biên dịch: lỗi biên dịch có thể phát sinh nếu mô-đun không có trong mô-đun đường dẫn lúc biên dịch.
  • tùy chọn trong thời gian chạy: mô-đun không thể được tính đến trong giai đoạn kiểm tra sự tỉnh táo khi một ứng dụng được khởi động. Ứng dụng khởi động ngay cả khi không có mô-đun.

Ví dụ:chúng tôi muốn đề xuất tính ổn định của dữ liệu của một ứng dụng, trong một oracle cơ sở dữ liệu hoặc h2database .

module com.tutorialspoint.model {
   requires static ojdbc
   requires static h2daabase.h2; 
}