NumberFormat currencyFormatter=NumberFormat.getCurrencyInstance();
这是什么意思呀
不是NumberFormat currencyFormatter= new NumberFormat();声明一个实例吗???
这是什么意思呀
不是NumberFormat currencyFormatter= new NumberFormat();声明一个实例吗???
但静态方法也可以创建并返回一个新实例啊,当然,也可能不是新创建的,但总是可以返回一个实例的。
不知道你为啥因为从一个方法中返回一个实例感到奇怪。
不也是从一个方法中返回一个新对象吗?难道没见过?
比如在singleton, factory等模式中,就常用这些伎俩。
如果没有,只能用静态方法了非静态方法的最最常见的,比如 clone这个方法Object o1...;//假设已经实现了Clonable接口,代码略
Object o2=o1.clone();
{
static A getA()
{
return new A();
}
}所以也是返回一个实例的.
还是不怎么明白,静态方法怎么创建实例的吗,必须是静态方法吗,普通方法不行吗?
========================================================================
我后来说的是特指那种把构造函数给声明为private的模式中的情况。
一旦构造函数成为private的,外界就不可能只接产生实例了,既然实例都还没有,你普通方法又从哪里调?——所以,这种情况只有先依靠静态方法把实例产生出来,然后咱们才有必要讨论如何调用一般方法的问题(别访了非静态的一般方法必须从实例上调用,不能从类名上调用)比如:
public class Singleton {
private Singleton() {}
private static Singleton instance = new Singleton();
public static getInstance() {
return instance;
}
}