本帖最后由 司懿卓 于 2012-11-22 16:59 编辑
程序代码:- <strong>class Singleton
- {
- private static Singleton instance;
- //用private修饰无参数的构造器
- private Singleton(){}
- //静态方法,用于返回instance实例
- //加入自定义控制,保证只产生一个Singleton对象
- public static Singleton getInstance()
- {
- //如果instance为null,则新建Singleton对象
- if (instance == null)
- {
- instance = new Singleton();
- }
- //返回instance对象
- return instance;
- }
- }
- public class SingletonTest
- {
- public static void main(String[] args)
- {
- //创建Singleton对象不能通过构造器
- Singleton s1 = Singleton.getInstance();
- Singleton s2 = Singleton.getInstance();
- System.out.println(s1 == s2);
- }
- }</strong>
复制代码 这个是没有问题的..
注意if 分支语句,如果我把if 控制语句修改成如下:- if (instance == null)
- {
- instance = new Singleton();
- }
- //返回instance对象
- else
- {
- return instance;
- }
复制代码 则会提示"SingletonTest.java:21: 错误: 缺少返回语句"
但是,else执行体是有return的, 这是为什么???
===========================================
因为,定义 getInstance()方法时,已经告诉系统,这个方法需要返回值了..
if else 语句的用意类似于:如果....否则...
但,这个方法的用意是,如果条件成立了,返回instance.
如果不成立了也是返回instance..
其实,如果在if()语句最后加个 return instance; 也行..
但是,与其这么麻烦,还不如舍弃else ..
因为,return语句是不管条件成不成立都需要存在的...
还有谢谢版主的辛苦加分~~!! |