在阅读了c#的隐藏特性之后,我想知道Java的隐藏特性有哪些?
当前回答
因为还没有人说过(我认为)我最喜欢的功能是自动装箱!
public class Example
{
public static void main(String[] Args)
{
int a = 5;
Integer b = a; // Box!
System.out.println("A : " + a);
System.out.println("B : " + b);
}
}
其他回答
不那么隐蔽,但很有趣。
你可以有一个没有main方法的"Hello, world"(它会抛出NoSuchMethodError思想)
最初由RusselW在最奇怪的语言功能上发布
public class WithoutMain {
static {
System.out.println("Look ma, no main!!");
System.exit(0);
}
}
$ java WithoutMain
Look ma, no main!!
我今天才(重新)了解到$是Java中方法或变量的合法名称。与静态导入相结合,可以生成一些可读性稍强的代码,这取决于你对可读的看法:
http://garbagecollected.org/2008/04/06/dollarmaps/
我投票给java.util.concurrent,因为它的并发集合和灵活的执行器允许线程池、计划任务和协调任务。DelayQueue是我个人最喜欢的,其中元素在指定的延迟后才可用。
timer和TimerTask可以安全地休息了。
而且,它不是完全隐藏的,而是在与日期和时间相关的其他类不同的包中。timeunit在纳秒、微秒、毫秒和秒之间转换时很有用。
它比通常的someValue * 1000或someValue / 1000读起来要好得多。
可以在匿名内部类上定义和调用方法。
其实它们并没有那么隐藏,但是很少有人知道它们可以用来定义一个类中的新方法,并像这样调用它:
(new Object() {
public String someMethod(){
return "some value";
}
}).someMethod();
可能不是很常见,因为它也不是很有用,你只能在定义方法时调用它(或通过反射)
我喜欢方法的静态导入。
例如,创建以下util类:
package package.name;
public class util {
private static void doStuff1(){
//the end
}
private static String doStuff2(){
return "the end";
}
}
然后像这样使用它。
import static package.name.util.*;
public class main{
public static void main(String[] args){
doStuff1(); // wee no more typing util.doStuff1()
System.out.print(doStuff2()); // or util.doStuff2()
}
}
静态导入适用于任何类,甚至数学…
import static java.lang.Math.*;
import static java.lang.System.out;
public class HelloWorld {
public static void main(String[] args) {
out.println("Hello World!");
out.println("Considering a circle with a diameter of 5 cm, it has:");
out.println("A circumference of " + (PI * 5) + "cm");
out.println("And an area of " + (PI * pow(5,2)) + "sq. cm");
}
}
推荐文章
- 在流中使用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