A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class TestSingle {
        private static TestSingle s = null;
        private TestSingle(){}
        public static TestSingle getInstance(){
                if(s == null){
                        synchronized(TestSingle.class){
                                if (s == null)
                                        s = new TestSingle();
                        }
                }
                return s;
        }   
}
在静态的getInstance方法中使用s = new TestSingle(),而TestSingle()的构造函数不是非静态的吗,这样为什么不报错?

6 个回复

正序浏览
Cancer 发表于 2015-8-24 15:58
我试着照你的代码写了,一边没有报错啊,是不是的编辑器有问题啊

额,我就是想知道为什么不报错,理论上应该报错的啊
回复 使用道具 举报
我试着照你的代码写了,一边没有报错啊,是不是的编辑器有问题啊
回复 使用道具 举报
Cancer 发表于 2015-8-24 14:59
构造方法要与类名相同;例如这样:
构造方法没有返回值类型

有啊,private TestSingle(){}不就是吗,你还没明白我的意思,我是说在getInstance()方法中通过new TestSingle(),getInstance()方法是static的,但是TestSingle()这个构造函数并不是static的,这样是为什么?
回复 使用道具 举报
构造方法要与类名相同;例如这样:
  1.         public class test1 {
  2.                
  3.                 int age;
  4.                 public test1(){//无参构造方法
  5.                        
  6.                 }
  7.                 public test1(int age){//带参构造方法
  8.                         this.age=age;
  9.                 }
复制代码

构造方法没有返回值类型
回复 使用道具 举报
Cancer 发表于 2015-8-24 14:44
public static TestSingle getInstance(){,你确定你的构造函数是这么定义的

getInstance方法不是构造函数啊
回复 使用道具 举报
public static TestSingle getInstance(){,你确定你的构造函数是这么定义的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马