/** * 书本:《Thinking In Java》 * 功能:实现组合语法,创建一个简单的类,在第二个类中,将一个引用定义为第一个类的对象。运用惰性初始化实例化这个对象 * 文件:test1.java * 时间:2014年10月12日15:39:13 * 作者:cutter_point */ package Lesson7ReusingClasses; import static net.mindview.util.Print.*; class Simple { String s; //构造函数,toString函数,更改函数 public Simple(String si) { s=si; } public String toString() { return s; } public void setString(String newString) { s=newString; } } class Second { Simple simple; //类的组合 String s; //构造函数,检验初始化函数,lazy惰性初始化方法,得到simple类方法,tostring方法,setsimple类方法 public Second(String si) { s=si; } public void check() { if(simple == null) print("没有初始化simple"); else print("simple已经被初始化"); } public Simple lazy() { if(simple == null) { print("构造初始化simple"); simple=new Simple(s); } return simple; } public Simple getSimple() { return simple; } //tostring方法,setsimple类方法 public String toString() { return lazy().toString(); } public void setSimple(String ss) { lazy().setString(ss); } } public class test1 { public static void main(String [] args) { Second second=new Second("Init String"); second.check(); print(second.getSimple()); second.check(); print(second); second.setSimple("cutter_point good"); print(second); } }
输出:
没有初始化simple obj1
null obj1
没有初始化simple obj1
构造初始化simple obj1
Init String obj1
cutter_point good obj1
原文地址:http://blog.csdn.net/cutter_point/article/details/45038571