`
yy77
  • 浏览: 8333 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
文章列表
> > nil.object_id = > 4 原因是因为nil是一个固定的object,在如下在$rubyhome\lib\1.8\i386-mswin32中的ruby.h头文件里面有如下特殊对象的构造。 /* special contants - i.e. non-zero and non-fixnum constants */ #define Qfalse ((VALUE)0) #define Qtrue ((VALUE)2) #define Qnil ((VALUE)4) #define Qundef ((VALUE)6) / ...
要保证一个类不能被实例化(比如某些Utility类,主要是一些静态方法),为这个类写一个private的构造方法那是最好的了。 public class UtilityClass { private UtilityClass() { throw new AssertionError(); } ...... } 这样做同时保证了这个类不能被继承。因为子类必须要调用父类的构造方法的。 如果真的写了那么一个子类会怎么样呢?会在编译的时候出错的,表明父类的构造方法是private的。 Parent() has private access in Pare ...
在Java中有很多需要单例(Singleton)的场合,来保证其只被创建一次。先来看看2种在JDK1.5之前的2种实现方法,然后再看一种JDK1.5及以后才可以用的实现方法。 [list=1] 声明constructor为private,然后将该单例对象声明为public的。 // Singleton with public final field public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() { ... } public void ...
我们有时候会遇到一些有超多参数的构造函数。其实对于日渐复杂的类来说,这种情况并不少见。使用Builder和一些method chain的改造,可以使我们的代码看起来更加DSL化。 Car car = CarBuilder.buildCar(CarType.MINI).engine(CarEngine.CVTT).size(3.15).build(); 这样的方法比起原来的 Car car = new Car(CarType.MINI,CarEngine.CVTT,3.15); 更能确切地知道每个参数是用来干什么的,程序也更加容易读懂。
在想创建一个对象的时候,尽量使用静态工厂方法(static factory method)来代替构造方法。 比如:Boolean b = Boolean.valueOf(true); 而非Boolean b = new Boolean(true); 好处之一,与构造方法不同,方法是有名字的。在弄一些类似DSL的时候,可能会比较有用。与其要记住很多构造参数的含义,不如用一个命名良好的方法来概括。 String.BlankStringWithLen(20)看上去要比new String(" ",20)要友好一些? 好处之二,就像各种工厂类一样,在返回常量的情况下,可以不用每次 ...
Global site tag (gtag.js) - Google Analytics