2013-05-13 25 views
22

Vì tôi hiểu mới là một từ khóa chứ không phải là một hàm.
java mới là gì? Một hàm hoặc từ khóa

Ví dụ

A a = new A(); 

instantiates đối tượng một loại A.
Một từ khóa không đi kèm với bất kỳ đối tượng cho mỗi gia nhập.

Ngược lại, khi chúng tôi có trong A một bên public class B chúng ta gọi là

B b = a.new B() 

Đây có vẻ như mới là một tài sản của B và không phải là một từ khóa độc lập.

Ý nghĩa của A.new là gì?

+8

Đó là từ khóa, theo định nghĩa. Thực tế là nó có thể xuất hiện ở những nơi mà bạn mong muốn một tên phương thức không thay đổi điều đó. –

+2

Tôi nghĩ bạn có nghĩa là 'a.new B();' thay vì 'A.new B(); ' –

+1

http://stackoverflow.com/a/15759892/2031799 - Tôi đã trả lời một câu hỏi tương tự. – Mikhail

Trả lời

16

New là từ khóa trong cả hai trường hợp. Đó là một phần của biểu thức tạo thể hiện lớp học .

Có hai hình thức: không đủ tiêu chuẩnđủ điều kiện.

Biểu mẫu không đủ tiêu chuẩn bắt đầu bằng từ khóa 'mới'.

Biểu mẫu đủ điều kiện bắt đầu bằng một lớp chính, sau đó là 'mới'. Điều này cho phép tạo ra các lớp bên trong - các lớp lồng nhau không tĩnh giữ một tham chiếu ngầm định đến một thể hiện của lớp bên ngoài. Biểu mẫu đủ điều kiện cung cấp một cách để chỉ định cá thể đó.

Từ Java Language Specification, section 15.9:

không đủ điều kiện biểu thức tạo lớp dụ bắt đầu với những từ khóa mới.

Biểu thức tạo thể hiện lớp không đủ tiêu chuẩn có thể được sử dụng để tạo một thể hiện của lớp, bất kể lớp đó là cấp cao nhất (§7.6), thành viên (§8.5, §9.5), địa phương (§14.3) hoặc lớp ẩn danh (§15.9.5).

Biểu thức tạo thể hiện lớp đủ điều kiện bắt đầu bằng Chính.

Biểu thức tạo thể hiện lớp đủ điều kiện cho phép tạo các phiên bản của các lớp thành viên bên trong và các lớp con ẩn danh của chúng.

0
B b = A.new B(); // A should be an instance object not a class name, 
       // otherwise it's not a valid syntax 

Bạn đang tạo một đối tượng kiểu B đó sẽ có quyền truy cập cho các thành viên thể hiện của các trường hợp A.

7

new là từ khóa có cú pháp riêng (như bạn đã nhận thấy). Xem JLS 3.9

Java không có chức năng như vậy. Nó có các phương thức và Java 8 sẽ thêm nhiều tính năng chức năng hơn.

0

Mới là chắc chắn một từ khóa trong Java.

Đây là một phần của cú pháp từ khóa mới. Điều đó có hai cách gọi, như bạn đã trình bày. Thứ hai được sử dụng để khởi tạo lớp bên ngoài đầu tiên trước khi bạn có thể khởi tạo lớp bên trong.

Đúng là có thể trông giống như thuộc tính của lớp, nhưng bạn sẽ không thể tạo thuộc tính như vậy trong Java. Vì 'mới' là từ khóa nên nó không thể được sử dụng làm tài sản.

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