2010-07-25 22 views
8

Utilizzo Java da un anno o giù di lì, e mi trovo costantemente a scoprire cose nuove nella lingua. La maggior parte di questa roba interessante, abbastanza interessante, non proviene da API o librerie di terze parti, ma piuttosto dalle classi fornite nel JDK.Classi Java più interessanti/utili?

Quindi mi chiedo, in parte per curiosità e in parte per l'educazione di altri e di me stesso, quali classi che vengono nel JDK sono le più interessanti/utili/le preferite?

+0

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

+0

@Brian: è simile e ugualmente interessante, anche se la maggior parte ha a che fare con eccitamenti di sintassi ecc. Piuttosto che con classi standard –

+0

è una domanda wiki della comunità, quindi perché è chiusa come soggettiva? –

risposta

22

Per definizione, Oggetto.

+3

+1 per intelligenza e intelligenza. –

+0

Seriamente Lol'd – Qix

1

Noioso, ma in qualche modo continua a tornare al System ole. Non per niente di bello o eccitante, ma per quell'unico comando probabilmente uso più di ogni altra cosa - System.out.println (o semplicemente stampa, se questo è più il tuo bollitore di pesce.)

0

Quadro di collezioni, Java Pacchetto di utilità esp. le classi di analisi di RegExp. Dipende davvero da cosa vuoi fare!

4

La maggior parte delle classi che implementano l'interfaccia Collection!

+0

D'accordo, le varie strutture dati sono davvero fantastiche! +1 per nominare uno specifico che ti piace veramente –

+1

Direi la classe 'Stack', Gli stack sono sempre utili. –

+0

LinkedList, perché l'inserimento all'inizio o alla fine o nel mezzo è costante, al contrario di ArrayList. Ha anche un'interfaccia di coda ed elenco in modo da poterlo usare come entrambi. –

2

Una cosa che ho visto mancare a persone nuove da Java è la classe SimpleDateFormat. Ho trovato un po 'di codice legacy sul mio progetto corrente che è stato scritto da un programmatore C++ che non conosceva veramente Java e in pratica ha fatto tutta la formattazione da data a stringa con codice personalizzato. Parla di reinventare la ruota.

Recentemente ho iniziato a utilizzare il supporto zip/decompressione che fa parte del JDK di serie. Funziona alla grande! Lo sto usando per creare archivi KMZ in una webapp.

0

Per me, molte classi nel pacchetto java.nio.

0

java.beans.Expression

0

mi pesano su mia domanda. La mia classe preferita è java.util.Random. Penso che sia incredibilmente utile per simulazioni di probabilità, giochi di carte e altri piccoli programmi. Trovo anche l'idea di (pseudo) casualità affascinante.

0
  • Base di tutti gli "oggetti" per i metodi equals() e toString().
  • Classe di eccezione. Non puoi eliminare con esso.
  • API collezioni. Quasi tutto da Collections API è utile e utilizzato nel codice.
  • Classe di sistema per System.out.println. Ma è quasi sostituito dal logger API.
  • ThreadPoolExecutor se il tuo prodotto utilizza realmente i thread e tu davvero cura che vengano controllati :).
  • JDBC API. Solamente basato su se siamo parlando di utilizzo. Ma anche questo è andando in fondo a causa di uso di Hibernate (strumenti ORM)

Ho cercato di elencare alcune fra le più utili, ma penso che la lista sarà davvero andare a lungo.

2

ThreadLocal è probabilmente vicino alla parte superiore dell'elenco. Questa classe è il modo principale in cui molta magia accade nei framework di livello superiore e, se usata correttamente, fornisce un modo interessante di condividere i riferimenti tra un thread.

Il pacchetto Reflection è anche piuttosto potente e uno strumento utile da usare con moderazione.

+0

InheritableThreadLocal sembra abbastanza bello. Potrei usarlo da solo nel prossimo futuro per gestire i dati del pool di thread relativi all'assegnazione del buffer. http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/java/lang/InheritableThreadLocal.html –

0

SwingWorker è sicuramente una grande classe. Ti consente di creare comodamente thread di lavoro nelle tue applicazioni Swing. Ciò restituirà il risultato finale dell'elaborazione e può anche fornire risultati intermedi all'EDT in base all'elaborazione.

6

Dal momento che hai menzionato in modo specifico JDK, penso che sia consentito menzionare un'API che in realtà non è disponibile nel JRE ed è anche meno conosciuta dalla maggior parte di noi: javax.tools.

Ecco un frammento demo completa:

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". 
    } 
} 

Utile? Non sono sicuro. Interessante? Sì, interessante sapere :)

Per il resto, mi piace il Collections, Reflection, Concurrent e JDBC API. Tutto ciò è già menzionato prima qui.