请告诉我何时在Java中使用getInstance()方法。

23

何时在Java中使用getInstance()方法?getInstance(null)的含义是什么?

locationProvider = LocationProvider.getInstance(null); 

有人能告诉我上面那行代码的含义吗?


4
这篇回答比这里的其他回答更好。 - jds
实际上,下面的答案(可以说)比前面评论中链接的顶部答案更清晰/实用:https://dev59.com/G2kv5IYBdhLWcg3wnCA7。 - user3773048
3个回答

38

使用getInstance()方法等的类属于单例设计模式。 基本上,该特定类只会有一个实例,并且您可以使用getInstance()获取它。

在这种情况下,LocationProvider只会有一个实例,因为它是设备特定的。您可以使用getInstance()方法来使用共享实例,而不是创建新实例。单例模式通常用于Java中处理数据管理器和硬件接口等事物,但不应过度使用,因为它会限制您只能使用一个实例。


4

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


这是不正确的。例如,Calendar.getInstance() == Calendar.getInstance()false - jds
Calendar.getInstance() == Calendar.getInstance() 的返回值取决于 getInstance() 方法的实现。如果 getInstance() 每次都返回相同的对象,则上述相等比较将返回 true。 - phoenix

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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接