内容转自:
你见过哪些让你瞠目结舌的 Java 代码技巧?
原文链接:
https://www.zhihu.com/question/37760140
来源:知乎
1
曾经不只一次在生产中见过类似这样的代码:
synchronized((Object)1){
// ...
}
这有很多变种,例如用 Integer.valueOf(1)、 (Integer)1之类的,那些细节都不重要。重要的是:凭空用一个 Integer对象作为锁对象。
2
AbstractComponentBuilderTemplateFactory
3
HelloWorld.java
// _ooOoo_
// o8o
// 88" . "88
// ( -_- )
// O = /O
// ____/`'____
// . ' // `.
// / : //
// / _ -:- -
// - ///
// _ ''/''
// .-__ `-` ___/-. /
// ___`. .' /--.-- `. . __
// ."" '< `.____<>_/___.' >'"".
// : `- `.;` _ /`;.`/ - ` :
// `-. _ __ /__ _/ .-` / /
// ======`-.____`-.________/___.-`____.-'======
// `=='
//
// .............................................
// 佛祖镇楼 BUG辟易
// 佛曰:
// 写字楼里写字间,写字间里程序员;
// 程序人员写程序,又拿程序换酒钱。
// 酒醒只在网上坐,酒醉还来网下眠;
// 酒醉酒醒日复日,网上网下年复年。
// 但愿老死电脑间,不愿鞠躬老板前;
// 奔驰宝马贵者趣,公交自行程序员。
// 别人笑我忒疯癫,我笑自己命太贱;
// 不见满街漂亮妹,哪个归得程序员?
packagecom.tianmaying;
importjava.util.Random;
publicclassHelloWorld{
publicstaticvoidmain(String...args){
System.out.println(randomString(-229985452)+' '+randomString(-147909649));
}
publicstaticStringrandomString(intseed){
Randomrand =newRandom(seed);
StringBuildersb =newStringBuilder();
while(true){
intn =rand.nextInt(27);
if(n ==0)break;
sb.append((char)('`'+n));
}
returnsb.toString();
}
}
4
第一次知道原来java是支持中文的类名和方法名的
publicclass谁的年龄大{
//------------这就叫代码的可读性---------
publicstaticvoidmain(String[]args){
int张三的年龄=20;
int李四的年龄=21;
boolean张三的年龄是不是比李四的年龄要大=判断甲的年龄大还是乙大(张三的年龄,李四的年龄);
if(张三的年龄是不是比李四的年龄要大==对){
在控制台输出这么一句话并换行("张三的年龄大");
}elseif(张三的年龄是不是比李四的年龄要大==大错特错){
在控制台输出这么一句话并换行("李四的年龄大");
}
}
//--------------定义自然语言(把你的注释删掉,改成方法名)--------------
staticboolean对=true;
staticboolean大错特错=false;
/**
* 你确定我应该写注释?
*/
publicstaticboolean判断甲的年龄大还是乙大(int甲的年龄,int乙的年龄){
return甲的年龄>乙的年龄;
}
publicstaticvoid在控制台输出这么一句话并换行(String要在控制台输出的话){
System.out.println(要在控制台输出的话);
}
}
输出 -> 李四的年龄大
5
importjava.lang.reflect.InvocationHandler;
importjava.lang.reflect.Method;
importjava.lang.reflect.Proxy;
publicclassHelloWorld{
publicstaticvoidmain(String[]args){
finalDogdog =newDog();
SingleManman =(SingleMan)Proxy.newProxyInstance(SingleMan.class.getClassLoader(),newClass[]{SingleMan.class},newInvocationHandler(){
@Override
publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowable{
Methodm =dog.getClass().getMethod(method.getName(),method.getParameterTypes());
Objectresult =m.invoke(dog,args);
returnresult;
}
});
man.say();
}
publicstaticclassDog{
publicvoidsay(){
System.out.println("汪!汪!");
}
}
publicinterfaceSingleMan{
voidsay();
}
}
6
大道至简、Java 代码技巧随着“老油条”的演变:
//刚学Java 11行代码
publicStringgetSex(intnum)
{
if(num ==0)
{
return"Girl";
}
else
{
return"Boy";
}
}
//1年后 6行代码
publicStringgetSex(intnum){
if(num ==0){
return"Girl";
}
return"Boy";
}
// 2年之后,开始变懒了 3行代码
publicStringgetSex(intnum){
returnnum ==0?"Girl":"Boy";
}
7
publicStringdoGenerate(){
StringBuilderstringBuilder =newStringBuilder();
stringBuilder.append("<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">n");
stringBuilder.append("<html>n");
stringBuilder.append("<head>n");
stringBuilder.append("<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />");
stringBuilder.append("<title>Generated By RAP</title>n");
stringBuilder.append("<style type="text/css">n");
stringBuilder.append("body {background-color:#E6E6E6; font-size:12px; font-family:Arial,Helvetica,sans-serif;}n");
stringBuilder.append(".div-a .head {background-color: Silver;text-align:center;}");
stringBuilder.append(".div-a .dataType { text-align:center; }n");
stringBuilder.append(".tr-p {height: 25px;}n");
stringBuilder.append("h1, h2, h3 {color:#8CB70E; font-weight:normal; margin:0; text-transform: uppercase;}");
stringBuilder.append(".td-p {border: Gray 1px solid;border-collapse: collapse;padding: 5px;}n");
stringBuilder.append(".table-a {border: Gray 1px solid;border-collapse: collapse;margin: 12px 8px 8px 8px;}n");
stringBuilder.append(".div-a { margin: 12px;}n");
stringBuilder.append(".div-a .head { background-color: Silver; text-align:center; }n");
stringBuilder.append(".div-a .head-name { width: 120px }n");
stringBuilder.append(".div-a .head-validator { width: 80px; }n");
stringBuilder.append(".div-a .head-type { width: 60px; }n");
stringBuilder.append(".div-a .head-remark { width: 200px; }n");
stringBuilder.append(".div-a .head-identifier { width: 140px; }n");
stringBuilder.append(".div-a .name { } n");
stringBuilder.append(".tester-form {margin: 12px; padding:8px; border: 1px gray dashed;} n");
stringBuilder.append(" .item { padding:8px;} n");
stringBuilder.append(" .identifier { color:Red;} n");
stringBuilder.append(" .url { color:Silver;} n");
stringBuilder.append(".div-a .validator { color: Red; text-align:center; }n");
stringBuilder.append(".div-a .real { color: Red; text-align:center; }n");
stringBuilder.append(".div-a .remark { color: Blue; }n");
stringBuilder.append(".div-a .identifier { color: Red; }n");
stringBuilder.append("input, textarea{ border:1px solid #CCCCCC; }n");
stringBuilder.append("</style>");
stringBuilder.append("</head>n");
stringBuilder.append("<body>n");
stringBuilder.append("<h2>ABOUT TEMPLATE</h2>n页面名称: "+page.getName()+"<br />");
stringBuilder.append("页面编号: "+page.getId()+"<br />");
stringBuilder.append("页面介绍: "+page.getIntroduction()+"<br />");
stringBuilder.append("<br /><hr /><br />");
stringBuilder.append("<font color='gray'><H2> RESPONSE PARAMETER LIST</H2></font>");
stringBuilder.append("<div class="div-a">");
stringBuilder.append("<table class="table-a"><tr class="head">");
stringBuilder.append("<td class="head-identifier">变量名</td><td class="head-name">参数意义</td>");
stringBuilder.append("<td class="head-type">参数类型</td><td class="head-identifier">实际传值</td>");
stringBuilder.append("<td class="head-remark">备注</td></tr>");
// print response parameter list
for(Actionaction :page.getActionList()){
if(!action.getResponseTemplate().equals(page.getTemplate()))continue;
for(Parameterp :action.getResponseParameterList()){
stringBuilder.append("<tr>");
stringBuilder.append("<td class="td-p identifier">"+p.getIdentifier()+"</td>");
stringBuilder.append("<td class="td-p name">"+p.getName()+"</td>");
stringBuilder.append("<td class="td-p dataType">"+p.getDataType()+"</td>");
stringBuilder.append("<td class="td-p real">$!"+p.getIdentifier()+"</td>");
stringBuilder.append("<td class="td-p remark">"+p.getRemark()+"</td>");
stringBuilder.append("</tr>");
}
}
stringBuilder.append("</table>n</div>n<div>");
intformCount =1;
// generate action tester
for(Actionaction :page.getActionList()){
stringBuilder.append("<h2> Action: "+action.getName()+" Tester</h2>");
stringBuilder.append("<div class="tester-form"><form name="formTester"+(formCount++)+"" method="post" action=""+action.getRequestUrl()+"">");
stringBuilder.append("<div class="item">请求地址:"+action.getRequestUrl()+"</div>");
for(Parameterp :action.getRequestParameterList()){
stringBuilder.append("<div class="item"><input type="text" width="200px" name=""
+p.getIdentifier()+""/> 变量名: <font color='red'>"+p.getIdentifier()+"</font> 变量意义: <font color='gray'>"
+p.getName()+"</font> 备注: <font color='blue'>"+p.getRemark()+"</font></div>");
}
stringBuilder.append("<div class="item"><input type="submit" class="button" value="Test"/></div>");
stringBuilder.append("</form></div>");
}
stringBuilder.append("</div>");
stringBuilder.append("</body>n");
stringBuilder.append("</html>n");
returnstringBuilder.toString();
}
用这样的方式拼接 HTML 页面的内容,包括 CSS 也很安分地躺在 Java 的怀中,这一刻我觉得 Java 实现了大一统的目标,与 HTML 和 CSS 完美结合在一起。我其实挺好奇如果再加入 Java 的话会怎么处理。
8
importjava.lang.reflect.InvocationHandler;
importjava.lang.reflect.Method;
importjava.lang.reflect.Proxy;
publicclassHelloWorld{
publicstaticvoidmain(String[]args){
finalDogdog =newDog();
SingleManman =(SingleMan)Proxy.newProxyInstance(SingleMan.class.getClassLoader(),newClass[]{SingleMan.class},newInvocationHandler(){
@Override
publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowable{
Methodm =dog.getClass().getMethod(method.getName(),method.getParameterTypes());
Objectresult =m.invoke(dog,args);
returnresult;
}
});
man.say();
}
publicstaticclassDog{
publicvoidsay(){
System.out.println("汪!汪!");
}
}
publicinterfaceSingleMan{
voidsay();
}
}
9
10
11
12