2010-07-25 23 views
8

He estado usando Java durante un año más o menos, y constantemente me encuentro descubriendo cosas nuevas en el idioma. La mayoría de estas cosas interesantes, curiosamente, no provienen de API o bibliotecas de terceros, sino de las clases que se envían en el JDK.¿Las clases Java más interesantes/útiles?

Así que me pregunto, en parte por curiosidad y en parte por la educación de los demás y de mí mismo, ¿qué clases que vienen en el JDK son las más interesantes/útiles/tu favorita?

+0

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

+0

@ Brian: Eso es similar e igualmente interesante, aunque la mayor parte de esto tiene que ver con peculiaridades sintácticas, etc en lugar de clases estándar –

+0

Este es una pregunta wiki de la comunidad, entonces ¿por qué se cierra como subjetivo? –

Respuesta

22

Por definición, Objeto.

+3

+1 por ingenio y astucia. –

+0

Seriamente jajaja – Qix

1

Aburrido, pero de alguna manera sigue volviendo al ole System. No es para nada genial o emocionante (como dije, aburrido), pero para ese comando probablemente use más que cualquier otra cosa: System.out.println (o simplemente imprima, si eso es más su caldero de pescado).

0

Marco de colecciones, Java Paquete de utilidades especialmente las clases de análisis RegExp. ¡Realmente depende de lo que quieras hacer!

4

La mayoría de las clases que implementan la interfaz Collection!

+0

¡De acuerdo, las diversas estructuras de datos son geniales! +1 para nombrar uno específico que realmente te gusta –

+1

Diría que la clase 'Stack', Stack's siempre es útil. –

+0

LinkedList, porque la inserción en la parte frontal o en el medio es constante, a diferencia de ArrayList. También tiene una interfaz de cola y lista para que pueda usarlo como cualquiera. –

2

Una cosa que he visto extrañar a las personas con Java es la clase SimpleDateFormat. Encontré un montón de código heredado en mi proyecto actual que fue escrito por un programador de C++ que realmente no conocía Java y básicamente hizo todo el formato de fecha a cadena con código personalizado. Habla sobre reinventar la rueda.

Recientemente comencé a usar el soporte de zip/unzip que es parte del stock JDK. ¡Funciona genial! Lo estoy usando para crear archivos KMZ en una aplicación web.

0

Para mí, muchas clases en el paquete java.nio.

0

java.beans.Expression

0

Voy a intervenir en mi propia pregunta. Mi clase favorita es java.util.Random. Creo que es increíblemente útil para simulación de probabilidad, juegos de cartas y otros pequeños programas. También encuentro fascinante la idea de (pseudo) aleatoriedad.

0
  • Base de todos los "Objetos" para equals() y métodos toString().
  • Clase de excepción. No puede deshacerse de con él.
  • API de colecciones. Casi todo de Collections API es útil y utilizado en su código.
  • Clase del sistema para System.out.println. Pero casi es reemplazado por el registrador API.
  • ThreadPoolExecutor si su producto realmente usa hilos y usted realmente se preocupa por ellos siendo controlados :).
  • JDBC API. Solo basado en si somos hablando de uso. Pero incluso esto se va en segundo plano debido al uso de Hibernate ( herramientas ORM)

ha intentado enumerar unos pocos útiles, pero creo que la lista realmente va a ir de largo.

2

ThreadLocal es probablemente cerca de la parte superior de la lista. Esta clase es la principal forma en que sucede gran parte de la magia en los marcos de nivel superior, y si se usa de manera adecuada, proporciona una forma interesante de compartir referencias entre un hilo.

El paquete Reflection también es bastante poderoso y una herramienta que vale la pena usar con moderación.

+0

InheritableThreadLocal parece bastante limpio también. Podría utilizarlo yo mismo en el futuro cercano para administrar los datos del grupo de subprocesos relacionados con la asignación del búfer. http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/java/lang/InheritableThreadLocal.html –

0

SwingWorker es definitivamente una gran clase. Le permite crear convenientemente hilos de trabajo en sus aplicaciones Swing. Esto devolverá el resultado final del procesamiento e incluso puede proporcionar resultados provisionales al EDT en función del procesamiento.

6

Como usted mencionó específicamente JDK, creo que se puede mencionar una API que en realidad no está disponible en el JRE y también es menos conocida entre la mayoría de nosotros: javax.tools.

He aquí un fragmento de demostración 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". 
    } 
} 

Útil? No es seguro. ¿Interesante? Sí, interesante saber :)

Para el resto, me gusta el Collections, Reflection, Concurrent y JDBC API. Todos los cuales ya están mencionados aquí.

Cuestiones relacionadas