其他
如何编写可怕的 Java 代码?
对一切使用异常
public static void horribleIteration(String [] words){
int i = 0;
try {
while(true){
System.out.println(words[i]);
i++;
}
} catch (IndexOutOfBoundsException e){
//iteration complete
}
}
不用担心访问修饰符
public static void readPrivate() throws NoSuchFieldException, IllegalAccessException {
Field f = System.class.getDeclaredField("lineSeparator");
f.setAccessible(true);
String separator = (String) f.get(System.class);
System.out.println("Line separator is " + separator + ".");
}
public static void readWritePrivate() throws NoSuchFieldException, IllegalAccessException {
Field f = System.class.getDeclaredField("lineSeparator");
f.setAccessible(true);
String separator = (String) f.get(System.class);
System.out.println("Line separator is " + separator + ".");
f.set(System.class ,"!!!");
System.out.println("Line one");
System.out.println("Line two");
System.out.println("Line three");
}
输出为:
Line separator is
WARNING: All illegal access operations will be denied in a future release
.
Line one!!!Line two!!!Line three!!!
看起来不错!
在 Java 中没有什么是真正的 final
public static void notSoFinal() throws NoSuchFieldException, IllegalAccessException, InterruptedException {
ExampleClass example = new ExampleClass(10);
System.out.println("Final value was: "+ example.finalValue);
Field f = example.getClass().getDeclaredField("finalValue");
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(f, f.getModifiers() & ~Modifier.FINAL);
f.setInt(example, 77);
System.out.println("Final value was: "+ example.finalValue);
}
public static class ExampleClass {
final int finalValue;
public ExampleClass(int finalValue){
this.finalValue = finalValue;
}
}
将对象用于一切
public static void printThings (List things){
int i = 0;
try {
while(true){
System.out.println(things.get(i));
i++;
}
} catch (IndexOutOfBoundsException e){
//iteration complete
}
}
List superList = new ArrayList();
superList.add(7);
superList.add("word");
superList.add(true);
superList.add(System.class);
printThings(superList);
public static void printThingsUppercaseStrings (List things){
int i = 0;
try {
while(true){
Object o = things.get(i);
System.out.println(o);
if(o.getClass() == String.class){
String so = (String) o;
so = so.toUpperCase();
System.out.println(so);
}
i++;
}
} catch (IndexOutOfBoundsException e){
//iteration complete
}
}
充分拥抱便捷编程的艺术
"I will always choose a lazy person to do a difficult job...because, he will find an easy way to do it. --Bill Gates"
"我总是会选择一个懒人去完成一份困难的工作...因为,他会找到捷径。" -- 比尔盖茨
永远不要编写测试,只是不要编写错误! 将所有都定义为 public -方便访问! 支持全局变量–您可能需要它们! 大型接口优于小型专用接口–可以使用的方法越多越好! 支持继承而不是合成(使用接口中的默认方法从未如此简单)! 始终使用装箱类型–它们也可以用作对象! 尽可能使用最短的名字(a, b, n 最好)!
不要学习任何新知识–你总是最了解
新类库 新语言 新框架
作者:武培轩
https://www.cnblogs.com/wupeixuan/p/12014765.html
END
学习资料:
分享一份最新 Java 架构师学习资料最近热文:
1、YYYY-MM-DD 的黑锅,我们不背!2、不要在 JDK 7+ 中使用这个 JSON 包了!3、疯了!同事又问我为什么不能用 isXXX4、为什么微服务一定要有网关?5、全球 IPv4 地址正式耗尽Java干货:1、面试问我 Java 逃逸分析,瞬间被秒杀了。2、不能用 + 拼接字符串?我要吊打面试官!3、到底什么是重入锁,拜托,一次搞清楚!
4、你真的搞懂 transient 关键字了吗?
5、代码写成这样,老夫无可奈何!
Spring干货:
1、Spring 事务失效的 8 大原因,吊打面试官!2、Spring 面试 7 大问题,你顶得住不?3、Spring Boot 之配置导入,强大到不行!4、Spring Boot 面试,一个问题就干趴下了!
5、Spring Cloud 升级最新 Greenwich 版本本公众号干货实在太多了,没法都搬上来,扫码关注Java技术栈公众号,获取更多最主流的 Java 技术干货。
点击「阅读原文」带你飞~