什么时候创建一个Android类的新实例?

时间:2013-12-12 22:00:37

标签: java android

因此,我首先进入Android开发阶段并希望使用蓝牙API做一些事情。令我困惑的是,在我看到的每个例子中你都不需要创建蓝牙适配器的新实例,你可以像这样调用它。

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 

我无法理解为什么没有人做这件事:

BluetoothAdapter mBluetoothAdapter = new BluetoothAdapter(); 
myBluetoothAdapter = mBluetoothAdapter.getDefaultAdapter(); 

现在让我非常与我创建新实例的类以及我不创建的对象相混淆。

3 个答案:

答案 0 :(得分:1)

BluetoothAdapter类可能是Singleton类,因此您可以通过调用静态方法getDefaultAdapter()来获取实例,该方法会为您返回一个实例。

并且您无法实例化静态类。

请查看此维基百科页面:http://en.wikipedia.org/wiki/Singleton_pattern

答案 1 :(得分:0)

如果要从工厂获取对象,为什么要初始化对象?你实际上是在创建两个对象然后扔掉第一个对象。因此,如果您的类具有工厂方法,则跳过对象初始化行。 是的,了解课程是否有工厂方法的唯一方法是查看文档并随时学习。

答案 2 :(得分:0)

这是一种单身设计模式。当您只想要该类的一个实例时,可以使用此模式。您不需要BluetoothAdapter的多个实例。当您必须在实例之间共享资源时,通常需要使用单例,例如,您可能希望在多个对象上使用类。如何在java中完成这是通过静态字段,如下所示:

 class BluetoothAdapter{

    private static adapter = null;

    private BluetoothAdapter(){

    }

    public static getDefaultAdapter(){
        if (adapter == null){
            adapter = new BluetoothAdapter();
        }
        return adapter;
    }
}

首先,这允许您当时只有一个此对象的实例。此外,它只在您真正需要时才创建对象。如果您从不调用getDefaultAdapter(),则永远不会创建适配器。