最有趣/最有用的Java类?
我已经使用Java一年左右了,而且我经常发现自己在语言中发现了新的东西。 有趣的是,大多数这些很酷的东西不是来自第三方API或库,而是来自JDK中提供的类。
所以我想知道,部分是出于好奇,部分是出于对他人和我自己的教育,JDK中哪些课程最有趣/最有用/最喜欢?
根据定义,对象。
由于您特别提到了JDK,我认为允许提及一个实际上在JRE中不可用的API,并且在我们大多数人中也不太了解: javax.tools
。
这是一个完整的演示片段:
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". } }
有用? 不确定。 有趣? 是的,有趣的是知道:)
对于残余,我喜欢Collections , Reflection , Concurrent和JDBC API。 所有这些都在此之前已经提到过。
大多数实现Collection
接口的类!
我见过的新手让人们遗漏的一件事是SimpleDateFormat类。 我在当前项目中发现了一堆遗留代码,这些代码是由一个不熟悉Java的C ++程序员编写的,他基本上使用自定义代码完成了所有日期到字符串的格式化。 谈论重新发明轮子。
我最近开始使用zip / unzip支持,这是JDK的一部分。 它很棒! 我正在使用它在webapp中创建KMZ档案。
ThreadLocal可能接近列表的顶部。 这个类是很多魔术在更高级别框架中发生的主要方式,如果使用得当,它提供了一种在线程之间共享引用的有趣方式。
Reflection软件包也非常强大,是适合使用的有用工具。
无聊,但不知何故,它不断回到ole System
。 不是为了任何酷或令人兴奋的东西(正如我所说,无聊),但对于那个命令我可能比其他任何东西使用更多 – System.out.println
(或者只是打印,如果这更像你的鱼的水壶。)
集合框架,Java实用程序包esp。 RegExp解析类。 真的取决于你想做什么!
对我来说, java.nio
包中有很多类。
java.beans.Expression
我会根据自己的问题来衡量。 我个人最喜欢的类是java.util.Random。 我认为它对概率模拟,纸牌游戏和其他小程序非常有用。 我也发现(伪)随机性的想法令人着迷。
- equals()和toString()方法的所有“对象”的基础。
- exception类。 你无法取消它。
- 集合API。 几乎所有Collections API中的内容都很有用,并且在您的代码中使用。
- System.out.println的系统类。 但它几乎被logger API取代。
- ThreadPoolExecutor如果你的产品真的使用线程,你真的关心它们被控制:)。
- JDBC API。 仅仅基于我们是否在讨论使用方法。 但是由于使用了Hibernate(ORM工具),即使这样也会在后台进行
试图列出一些有用的,但我认为列表真的会很长。
SwingWorker
绝对是一个很棒的课程。 它允许您在Swing应用程序中方便地创建工作线程。 这将返回处理的最终结果,甚至可以基于处理向EDT提供中间结果。