在阅读了c#的隐藏特性之后,我想知道Java的隐藏特性有哪些?
当前回答
一个接口可以扩展多个接口,但一个类只能扩展一个类,这让我感到惊讶。
其他回答
在Swing中工作时,我喜欢隐藏的Ctrl - Shift - F1特性。
它转储当前窗口的组件树。 (假设您没有将该击键绑定到其他内容。)
我今天才(重新)了解到$是Java中方法或变量的合法名称。与静态导入相结合,可以生成一些可读性稍强的代码,这取决于你对可读的看法:
http://garbagecollected.org/2008/04/06/dollarmaps/
您可以使用string .format()构建sprintf样式的字符串。
String w = "world";
String s = String.format("Hello %s %d", w, 3);
当然,您也可以使用特殊的说明符来修改输出。
更多信息请点击:http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax
他们花了足够长的时间来增加支持,
系统托盘
当人们意识到可以使用反射调用私有方法并访问/更改私有字段时,他们有时会有点惊讶……
考虑下面的类:
public class Foo {
private int bar;
public Foo() {
setBar(17);
}
private void setBar(int bar) {
this.bar=bar;
}
public int getBar() {
return bar;
}
public String toString() {
return "Foo[bar="+bar+"]";
}
}
执行这个程序…
import java.lang.reflect.*;
public class AccessibleExample {
public static void main(String[] args)
throws NoSuchMethodException,IllegalAccessException, InvocationTargetException, NoSuchFieldException {
Foo foo=new Foo();
System.out.println(foo);
Method method=Foo.class.getDeclaredMethod("setBar", int.class);
method.setAccessible(true);
method.invoke(foo, 42);
System.out.println(foo);
Field field=Foo.class.getDeclaredField("bar");
field.setAccessible(true);
field.set(foo, 23);
System.out.println(foo);
}
}
...将产生以下输出:
Foo[bar=17]
Foo[bar=42]
Foo[bar=23]
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder
- 将JSON字符串转换为HashMap