class cat{
        static final cat a=new cat();
private cat() {
}
// public static  text1 c() {
// return a;
// }
}就是如果修饰词不是private static  而是 static final  的话好像也指创建了一个对象啊就可以直接调用了,下面的方法就没有意义了。。为什么不能这样写啊。。

解决方案 »

  1.   

    单例 私有化构造方法啊 你这样还是可以到处new对象 
      

  2.   


    首先要清楚 final 关键字的含义:在Java中声明类、属性和方法时,可使用关键字final来修饰,表示“最终”。
                                                        final标记的类不能被继承。提高安全性,提高程序的可读性。 
                                                                      String类、System类、StringBuffer类
                                                        final标记的方法不能被子类重写。
                                                                       Object类中的getClass()。
                                                        final标记的变量(成员变量或局部变量)即称为常量。名称大写,且只能被赋值一次。
                                                        final标记的成员变量必须在声明的同时或在每个构造方法中或代码块中显式赋值,然后才能使用。
                                                        final double PI=3.14;
    所谓“单例模式”指的是一个类只能创建一个对象,也就是在类外不能通过 new Singleton();创建类的对象,而是通过方法调用类的对象。
    而static final修饰的类,说明此类是静态类,不能被继承,但在类外可以通过new Singleton();创建类的对象。
    上述代码虽然在类的外部能创建对象,但已经不是单例模式