2012-03-08 22 views
9

Nếu điều này có thể, phần nào của trình biên dịch java cần phải được thiết kế lại để có câu lệnh "nhập dưới dạng", vì vậy, mã có thể trông giống như theo cách này:Cần phải làm gì để thực hiện "nhập ... dưới dạng ..." trong java

import java.util.Date; 
import mypackage.Date as MyDate; 
//... 
javaDate = new Date(); 
myDate = new MyDate(); 

Thậm chí nhiều hơn, những gì cần để có được loại cú pháp:

import java.util.Date; 
import path.to.mypackage as MP; 
//... 
javaDate2 = new Date(); 
myDate2 = new MP.Date(); 

Và những gì rắc rối nó sẽ gây ra cho mã hiện hành?

+0

Bạn có ngụ ý rằng bạn định "tái kỹ sư" trình biên dịch Java không? –

+0

Chỉ cần cố gắng hiểu * cách java *. –

+1

Lưu ý: Toàn bộ cơ chế 'import' chỉ tồn tại ở thời gian biên dịch. Khi bạn đến các tệp '.class', tất cả các tên lớp đầy đủ. Vì vậy, thay đổi đó sẽ * chỉ * yêu cầu thay đổi đối với trình biên dịch, không cần phải thay đổi phần nào của hệ thống (JVM, thư viện, ...). –

Trả lời

6

Điều này rõ ràng đòi hỏi phải có thay đổi đối với trình biên dịch Java. Nếu bạn thực sự quan tâm đến việc làm một cái gì đó như thế này, sau đó nhìn vào dự án OpenJDK, nơi bạn sẽ tìm thấy mã nguồn cho trình biên dịch Java và môi trường thời gian chạy của Oracle.

Nếu bạn muốn đề xuất tính năng mới này cho một phiên bản Java trong tương lai, thì bạn phải đi qua số Java Community Process.

+0

Tôi bỏ phiếu bài đăng này là câu trả lời tốt nhất và đơn giản. Mặc dù, tôi không hiểu cách sử dụng tính năng này nếu cơ chế này đề xuất với JCP. Mọi người có thể dễ dàng và dễ đọc hơn để ghi 'Ngày' thay vì' MyDate' –

+0

Khi đoán, phải có rất nhiều JCP tồn tại cho loại * đường cú pháp * này. –

+4

@ wahyu.fahmy Có những ví dụ về nơi điều này có thể hữu ích. Có ví dụ 'java.util.Date' và' java.sql.Date'. Nếu bạn nhập cả hai, thì Java không biết bạn muốn nói cái nào nếu bạn sử dụng tên 'Date'. Nó sẽ hữu ích nếu bạn có thể đổi tên nó thành 'SqlDate', ví dụ. – Jesper

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