/**
* 书本:《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