在阅读了c#的隐藏特性之后,我想知道Java的隐藏特性有哪些?
当前回答
一些人已经发布了关于实例初始化器的文章,下面是它的一个很好的用法:
Map map = new HashMap() {{
put("a key", "a value");
put("another key", "another value");
}};
是初始化映射的快速方法,如果你只是做一些快速简单的事情。
或者用它来创建一个快速摆动框架原型:
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.add( new JLabel("Hey there"){{
setBackground(Color.black);
setForeground( Color.white);
}});
panel.add( new JButton("Ok"){{
addActionListener( new ActionListener(){
public void actionPerformed( ActionEvent ae ){
System.out.println("Button pushed");
}
});
}});
frame.add( panel );
当然,它也可能被滥用:
JFrame frame = new JFrame(){{
add( new JPanel(){{
add( new JLabel("Hey there"){{
setBackground(Color.black);
setForeground( Color.white);
}});
add( new JButton("Ok"){{
addActionListener( new ActionListener(){
public void actionPerformed( ActionEvent ae ){
System.out.println("Button pushed");
}
});
}});
}});
}};
其他回答
语言级assert关键字。
我个人很晚才发现java.lang.Void——结合泛型提高了代码的可读性,例如Callable<Void>
Javadoc——在正确编写的情况下(不幸的是,一些开发人员并不总是这样),它会为您提供一个清晰、连贯的描述,说明代码应该做什么,而不是它实际做什么。然后可以将其转换为一组不错的可浏览的HTML文档。如果你使用持续集成等方法,它可以定期生成,这样所有开发者都可以看到最新的更新。
值:
new URL("http://www.yahoo.com").equals(new URL("http://209.191.93.52"))
是真的。
(摘自Java Puzzlers)
我最喜欢的:转储所有线程堆栈跟踪到标准输出。
在你的java cmd/控制台窗口中按CTRL-Break键
unix: kill -3 PID
推荐文章
- 在Selenium中等待页面加载
- Maven父pom vs模块pom
- 将JSON数据转换为Java对象
- Java的隐藏特性
- 使用Java 8的可选Stream::flatMap
- 使用管道字符("|")分割字符串
- 在IntelliJ中找不到Maven插件
- Java List.add() UnsupportedOperationException
- 连接两个字节数组的简单方法
- 为什么Mockito不模拟静态方法?
- Volatile boolean vs AtomicBoolean
- 在一个类中使用相同的方法实现两个接口。覆盖了哪个接口方法?
- 线程的上下文类装入器和普通类装入器之间的区别
- 如何在Java中正确地比较两个整数?
- 在Java中获取“unixtime”