Java 代码简化系列 (一)
2013-01-23 23:11
323 查看
Java趣味短码 - (第一节)
今天跟公司的童鞋聊天的时候,谈到了关于短码和代码的精简的方式,所以整理出来。需求很简单。
首先定义一个类
class Item{ public int key; public int l; public int r; };
然后主函数的场景大概是这样
public static void main(String[] args) { Item x; x = new Item(); x.key = 1; x.l = 10; x.r = 20; int i = 0; if (x.key > i){ i = x.l; }else{ i = x.r; } i = 0; if ( x.key > i){ x.l = i; }else{ x.r = i; } }
这里面有两个子场景,就是接下来要讨论的。
子场景1
if (x.key > i){ i = x.l; }else{ i = x.r; }
子场景2
if ( x.key > i){ x.l = i; }else{ x.r = i; }
子场景1 的规律是 左面的值都是一样的,都是赋值给i
子场景2 的规律是 右面的值都是一样的,都是用i赋给别的变量。
那么我们如何来简化实现这两类场景呢?
第一个场景很简单,可以如下优化:
i = ( x.key >i ? x.l : x.r);
第二个场景比较棘手!
因为表达式不能被赋值。
那么我们需要一个传值函数。
public static <T> boolean to_(T s , T d){ if( s.getClass() != d.getClass() ){ return false; } d = s; return true; }
有了如上函数我们就可以这样写
boolean r = ( x.key >i ? to_(i,x.l) : to_(i,x.r));
r是一个结果值用来检测类型是否正确。
如下是完整的代码。
package tPackge;
class Item{ public int key; public int l; public int r; };
public class test01 {
public static <T> boolean to_(T s , T d){ if( s.getClass() != d.getClass() ){ return false; } d = s; return true; }/**
* @param args
*/
public static void main(String[] args) {
Item x;
x = new Item();
x.key = 1;
x.l = 10;
x.r = 20;
int i = 0;
if (x.key > i){
i = x.l;
}else{
i = x.r;
}
System.out.println(x.l);
System.out.println(x.r);
System.out.println(i);
System.out.println("--------------------------");
i = ( x.key >i ? x.l : x.r);System.out.println(x.l);
System.out.println(x.r);
System.out.println(i);
/*
if ( x.key > i){
x.l = i;
}else{
x.r = i;
}
*/
System.out.println("--------------------------");
i = 0;
//if ( x.key > i ) { x.l = i; } else { x.r = i; }
System.out.println(x.l);
System.out.println(x.r);
if ( ( x.key >i ? to_(i,x.l) : to_(i,x.r)) ){ System.out.println(i); }
}
}
相关文章推荐
- 【Java代码保护探索之路系列:代码签名】之一:代码签名开篇
- Lombok简化Java代码 - Code less do More
- Lombok 简化java代码注解
- Java:用Lambda表达式简化代码一例
- 《Java & Ruby 代码分析系列》之基本的类实例对比
- Java代码管理工具SVN系列
- lombok 简化java代码注解
- google-collections让Java代码更简化 | GroovyQ
- java下载压缩包简化代码
- Lombok 简化java代码注解
- 简化 Ajax 和 Java 开发,第 1 部分: 用 JSP 标记文件动态生成 JavaScript 代码
- Lombok 简化java代码注解
- Spring MVC代码实例系列-07:Spring MVC用JavaConfig代替xml搭建项目
- Java代码简化神器-Lombok
- Android 开发系列(2) - native代码调用java代码 - 获取硬件 IMEI 和硬件序列号
- 黑马程序员--Java基础加强--04.代码简化 书写规律III_数组参数【重载】【数组】【可变参数数组】【泛型可变参数数组】【个人总结】
- 用Groovy思考 第一章 用Groovy简化Java代码
- 性能优化系列第三篇--Java(Android)代码优化
- Java系列: 关于虚引用及其测试代码
- Lombok 简化java代码注解