【问题标题】:please tell me when to use getInstance() method in java. [closed]请告诉我何时在 java 中使用 getInstance() 方法。 [关闭]
【发布时间】:2012-05-15 16:15:41
【问题描述】:

java中什么时候使用getInstance()方法,getInstance(null)是什么意思?

locationProvider = LocationProvider.getInstance(null); 

谁能告诉我上面这行的意思?

【问题讨论】:

标签: java jakarta-ee blackberry


【解决方案1】:

使用getInstance() 方法等的类属于singleton design pattern。 基本上,该特定类只会有一个实例,您可以通过getInstance() 获得它。

在这种情况下,LocationProvider 将永远只有一个实例,因为它是特定于设备的。您可以使用getInstance() 方法来使用共享实例,而不是创建它的新实例。在处理数据管理器和硬件接口之类的事情时,Java 中经常使用单例模式,但它不应该用于太多其他事情,因为它将您限制在单个实例中。

【讨论】:

    【解决方案2】:

    方法getInstance()被称为工厂方法。它用于创建单例类。这意味着只会创建该类的一个实例,而其他实例将获得该类的引用。

    【讨论】:

    • 这是不正确的。例如,Calendar.getInstance() == Calendar.getInstance()false
    • Calendar.getInstance() == Calendar.getInstance() 返回值取决于 getInstance() 实现。如果 getInstance() 每次都返回相同的对象,上面的相等比较将返回 true
    【解决方案3】:

    以下代码将为您提供纬度和经度。 getInstance() 将返回该特定类的实例。

        Criteria myCriteria = new Criteria();
        myCriteria.setCostAllowed(false);
        LocationProvider myLocationProvider = LocationProvider.getInstance(myCriteria);
        Location myLocation = myLocationProvider.getLocation(300);
        latitude  = myLocation.getQualifiedCoordinates().getLatitude();
        longitude = myLocation.getQualifiedCoordinates().getLongitude();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多