Khi tôi tìm kiếm mã nguồn Java, tôi tìm thấy một số tệp bất thường, chủ yếu liên quan đến ByteBuffer
s trong gói java.nio
có mã nguồn rất lộn xộn và được gắn nhãn This file was mechanically generated: Do not edit!
.Các tệp nguồn java được tạo cơ học trong mã nguồn Java
Những tệp này cũng chứa một phần lớn các dòng trống (một số thậm chí ở giữa javadocs (!!?)), Có lẽ để ngăn các số dòng thay đổi. Tôi cũng đã thấy một vài trình giải mã java, chẳng hạn như procyon-decompiler
, có tùy chọn để giữ số dòng, nhưng tôi nghi ngờ đó là trường hợp, bởi vì đặt các dòng trống trước khi giải thưởng cuối cùng không thay đổi gì cả. Dưới đây là một vài trong số các tệp này (Tôi không thể tìm thấy bất kỳ liên kết nào đến chúng trực tuyến và không ghi đè chúng vì tôi không muốn phá vỡ bất kỳ bản quyền nào, nhưng bạn có thể tìm thấy chúng trong thư mục src.zip
tại thư mục gốc của thư mục cài đặt JDK của bạn):
- java.nio.ByteBuffer
- java.nio.DirectByteBufferR
- java.nio.Bits
- java.nio.BufferOverflowException
Tôi tò mò muốn được biết:
- Những công cụ tạo ra những tập tin này?
- Tại sao công cụ giữ số dòng giống nhau? Là nó để làm cho gỡ lỗi (stacktraces) dễ dàng hơn?
- Tại sao một công cụ được sử dụng để tạo ra chúng, trong khi tất cả các lớp khác được lập trình bởi con người?
- Tại sao công cụ sẽ đặt các dòng trống ngẫu nhiên bên trong dấu ngoặc đơn, trước giải thưởng cuối cùng hoặc thậm chí trong javadocs?
Tôi nghi ngờ bạn sẽ nhận được câu trả lời vì mã đó dường như đã có một thời gian dài kiểm tra [bài đăng trên blog này từ năm 2006] (http://www.iggdawg.com/blog/2006/09/jaaaavaaaaa /), khi Java vẫn thuộc sở hữu của Sun. – APC
Dường như các tệp này được tạo trong quá trình xây dựng bởi một số bộ tiền xử lý từ tệp mẫu: http://hg.openjdk.java.net/jdk9/dev/jdk/file/3b298c230549/src/share/classes/java/nio/ ByteBufferAs-X-Buffer.java.template –
IIRC, bộ tiền xử lý C chèn các dòng trống do bỏ qua sau #if hoặC#else. Ở đây, lý do là rõ ràng, tôi nghĩ rằng: nếu một số trình biên dịch cờ một lỗi trong ouput, bạn sẽ tìm thấy nó trong đầu vào ban đầu. – laune