2010-07-25 41 views
8

Tôi đã sử dụng Java trong một năm hoặc bây giờ và tôi liên tục thấy mình khám phá những điều mới trong ngôn ngữ. Hầu hết những thứ tuyệt vời này, thú vị, không đến từ các API hoặc thư viện của bên thứ ba, mà là từ các lớp gửi trong JDK.Các lớp Java hữu ích/hữu ích nhất?

Vì vậy, tôi tự hỏi, một phần trong sự tò mò và một phần cho giáo dục của người khác và bản thân mình, những gì lớp học mà đến trong JDK là thú vị nhất/hữu ích/yêu thích của bạn?

+0

http://stackoverflow.com/questions/15496/hidden-features-of-java –

+0

@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 –

+0

là một câu hỏi wiki cộng đồng, vậy tại sao nó lại đóng vai trò chủ quan? –

Trả lời

22

Theo định nghĩa, Object.

+3

+1 cho trí thông minh và thông minh. –

+0

Nghiêm túc Lol'd – Qix

1

Boring, nhưng bằng cách nào đó, nó sẽ quay trở lại ole System. Không phải vì bất cứ điều gì thú vị hay thú vị (như tôi đã nói, nhàm chán), nhưng đối với một mệnh lệnh đó, tôi có thể sử dụng nhiều hơn bất kỳ thứ gì khác - System.out.println (hoặc chỉ in, nếu đó là ấm hơn của cá của bạn.)

0

Bộ sưu tập khung, Java Tiện ích gói đặc biệt. các lớp phân tích cú pháp RegExp. Thực sự phụ thuộc vào những gì bạn muốn làm!

4

Hầu hết các lớp triển khai giao diện Collection!

+0

Đồng ý, các cấu trúc dữ liệu khác nhau khá tuyệt vời! 1 để đặt tên cho một cái cụ thể mà bạn thực sự thích –

+1

Tôi sẽ nói lớp 'Stack', Stack's luôn hữu ích. –

+0

LinkedList, vì chèn ở phía trước hoặc cuối hoặc ở giữa là thời gian không đổi, trái ngược với ArrayList. Nó cũng có một giao diện hàng đợi và danh sách để bạn có thể sử dụng nó như một trong hai. –

2

Một điều mà tôi đã thấy những người mới đến Java bỏ lỡ là lớp SimpleDateFormat. Tôi tìm thấy một loạt các mã di sản trên dự án hiện tại của tôi đã được viết bởi một lập trình viên C++, người không thực sự biết Java và về cơ bản ông đã làm tất cả các định dạng ngày-to-string với mã tùy chỉnh. Nói về việc phát minh lại bánh xe.

Gần đây tôi đã bắt đầu sử dụng hỗ trợ zip/unzip là một phần của chứng khoán JDK. Nó hoạt động tuyệt vời! Tôi đang sử dụng nó để tạo lưu trữ KMZ trong một webapp.

0

Đối với tôi, nhiều lớp học trong gói java.nio.

0

java.beans.Expression

0

Tôi sẽ cân nhắc câu hỏi của riêng mình. Lớp yêu thích cá nhân của tôi là java.util.Random. Tôi nghĩ rằng nó cực kỳ hữu ích cho mô phỏng xác suất, trò chơi bài, và các chương trình nhỏ khác. Tôi cũng tìm thấy ý tưởng (giả ngẫu nhiên) hấp dẫn.

0
  • Cơ sở của tất cả "Đối tượng" cho phương thức equals() và toString().
  • Loại ngoại lệ. Bạn không thể bỏ đi cùng với nó.
  • API bộ sưu tập. Hầu hết mọi thứ từ API bộ sưu tập đều hữu ích và được sử dụng trong mã của bạn.
  • Lớp hệ thống cho System.out.println. Nhưng nó gần như được thay thế bằng logger API.
  • ThreadPoolExecutor nếu sản phẩm của bạn thực sự sử dụng các chủ đề và bạn thực sự quan tâm đến việc chúng được kiểm soát :).
  • API JDBC. Chỉ dựa trên nếu chúng ta đang nói về cách sử dụng. Nhưng ngay cả điều này được sẽ ở chế độ nền do sử dụng Hibernate (công cụ ORM)

Cố gắng liệt kê vài cái hữu ích, nhưng tôi nghĩ rằng danh sách thực sự sẽ đi dài.

2

ThreadLocal có thể nằm gần đầu danh sách. Lớp này là cách chính mà rất nhiều phép thuật xảy ra trong các khung mức cao hơn, và nếu được sử dụng đúng cách, cung cấp một cách thú vị để chia sẻ các tham chiếu giữa một luồng.

Gói Reflection cũng khá mạnh mẽ và một công cụ đáng giá để sử dụng ở mức vừa phải.

+0

InheritableThreadLocal có vẻ khá gọn gàng. Có thể sử dụng bản thân này trong tương lai gần để quản lý dữ liệu hồ bơi luồng liên quan đến việc cấp phát bộ đệm. http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/java/lang/InheritableThreadLocal.html –

0

SwingWorker chắc chắn là một lớp học tuyệt vời. Nó cho phép bạn tạo thuận tiện các luồng công nhân trong các ứng dụng Swing của bạn. Điều này sẽ trả về kết quả cuối cùng của quá trình xử lý và thậm chí có thể cung cấp kết quả tạm thời cho EDT dựa trên quá trình xử lý.

6

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.

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