Vì bạn đã đề cập cụ thể JDK, tôi nghĩ rằng nó được phép đề cập đến một API thực sự không có sẵn trong JRE và cũng ít được biết đến trong hầu hết chúng ta: javax.tools
.
Dưới đây là một đoạn giới thiệu đầy đủ:
package test;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.net.URL;
import java.net.URLClassLoader;
import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;
public class Test {
public static void main(String[] args) throws Exception {
// Prepare source somehow.
String source = "public class Test { static { System.out.println(\"test\"); } }";
// Save source in .java file.
File root = new File("/test");
File sourceFile = new File(root, "Test.java");
Writer writer = new FileWriter(sourceFile);
writer.write(source);
writer.close();
// Compile source file.
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null, null, null, sourceFile.getPath());
// Load compiled class.
URLClassLoader classLoader = URLClassLoader.newInstance(new URL[] { root.toURI().toURL() });
Class<?> cls = Class.forName("Test", true, classLoader); // Prints "test".
}
}
hữu ích? Không chắc. Hấp dẫn? Có, thú vị khi biết :)
Đối với phần còn lại, tôi thích các số Collections, Reflection, Concurrent, của API. Tất cả đều đã được đề cập trước đây.
http://stackoverflow.com/questions/15496/hidden-features-of-java –
@Brian: điều đó tương tự và không kém phần thú vị, mặc dù hầu hết nó phải làm với cú pháp cú pháp vv thay vì các lớp tiêu chuẩn –
là một câu hỏi wiki cộng đồng, vậy tại sao nó lại đóng vai trò chủ quan? –