慎用重载_2
摘要:看一个重载造成的恶果:List list=new ArrayList(); for(int i=-3;i<3;i++){ list.add(i); } for(int i=0;i<3;i++){ list.remove(i); } System.out.println(list);结果:[-2, 0, 2]神马情况?竟然不是[-3,-2,1]。原因就是List的remove方法有两个重载remove(E)和remove(int)。而remove(int)是删除第几个...
阅读全文
慎用重载_1
摘要:对象的运行时类型并不影响“哪个重载版本将被执行”;选择工作是在编译时候进行的,完全基于参数的编译时类型。看个例子先:package com.wjy.multithread;public class MainTest { public static void show(int a){ System.out.println("Integer"); } public static void show(double a){ System.out.println("Double"); } public static voi...
阅读全文
Enum实现单例模式
摘要:package com.wjy.effective;public enum Singleton { INSTANCE; private int numa; private int numb; public int add(int a,int b){ numa=a; numb=b; return numa+numb; }}客户端代码:package com.wjy.effective;public class TestSingleton { public static void main(String args...
阅读全文
看个泛型的例子
摘要:package com.wjy.effective;public class FStyle { public E getField(E param){ E result=param; return result; }}客户端程序:package com.wjy.effective;public class TestFStyle { public static void main(String args[]){ FStyle fStyle=new FStyle();// int n=fStyle.getField(1)+...
阅读全文
构造器优化需要多个构造器的类(建造者模式)
摘要:package com.wjy.effective;public class BuilderConstr { private final int age; private final int num; private final int size; public int getAge() { return age; } public int getNum() { return num; } public int getSize() { return size; } public ...
阅读全文
Java提供的enum详解
摘要:今天第一天看>,看了第六章的第一条就是全书的第30条--用enum代替int常量。1.第一次知道原来enum也可以像class那样拥有成员函数。举个四则运算的例子:package com.wjy.test;public enum Operation { PLUS,MINUS,TIMES,DIVIDE; double apply(double x,double y){ switch(this){ case PLUS: return x+y; case MINUS: return x-y; case TIMES: ...
阅读全文