public class  CompanyTest
{
static String companyName;
private CompanyTest(String companyName )
{
this.companyName = companyName;
}
public String getCompany()
{
return companyName;
} public static void main(String[]args)
{
Company com = new Company("chinaSoft");
System.out.println(com.getCompany()); }

}我把构造函数设计为了私有
应该怎么在类的外部再创建一个对象进行测试
最后得到的都是同一个实例

解决方案 »

  1.   

    你还是没掌握singleton的主要思想。
    如果getCompany()就是那个获取实例的方法,那么这个方法应该是静态的,而它他是获取那个实例的唯一入口,就靠他保证“唯一”。还有,那唯一的一份静态对象不是应该在构造函数中初始化的。构造函数初始化的不是静态数据,仍然是类本身的非静态数据,该怎样还怎样,只是构造函数变成了private的而已。
      

  2.   

    class Company {
    //唯一一分静态私有实例,但由于处于类内部,可以调用私有构造函数。
    private static Company instance = new Company("Mircosoft"); //一般变量。
    private String companyName; // 一般函数。
    public String getCompanyName() {
    return companyName;
    } // 私有构造函数,外界没法调用。
    private Company(String companyName) {
    this.companyName = companyName;
    } //靜态方法,返回那唯一的一份实例。
    public static Company getCompanyInstance() {
    return instance;
    }
    }//在类的内部测度单态模式没意义,类内部啥都能访问。
    //应该另外写一个新的类来测试(如果前面那个也是public类,那这个应该写在另一个文件中):
    public class CompanyTest {
    public static void main(String args[]) {
    System.out.println(Company.getCompanyInstance().getCompanyName());
    }
    }
      

  3.   

    一般来说,类的公有变量都要设为public的啊
    如要其不变,可以用static的吧。
      

  4.   

    main 方法还是在这个类里面啊。
    你要用别的类调用才不能调用。