【问题标题】:Referencing private helper class from activity从活动中引用私有助手类
【发布时间】:2012-12-02 18:01:11
【问题描述】:

我需要使用帮助类中的一些方法,但是当我尝试在我的活动中创建帮助类的对象时遇到了问题。

HelperClass helper = new HelperClass();

当我执行上述操作时,我收到一条错误消息,提示我需要将 Helper() 的可见性设为默认值。 这是帮助程序类的相关部分。

public class HelperClass {

private static HelperClass helperClass;
private String list;

private HelperClass() {
    initialiseHelper();
}

当我在 HelperClass 中取出 private 时很好,但我不想编辑这个类。有没有解决的办法?

【问题讨论】:

  • 应该有另一个不是private的构造函数。使用那个。
  • 如果这个类在同一个包中,那么你可以将构造函数包私有或添加一个公共的“工厂方法”,即。 e.一个静态方法来创建它的对象。

标签: java android class constructor


【解决方案1】:

您似乎正在尝试应用 Singleton 模式,但您缺少 getInstance() 方法,该方法应如下所示:

public static synchronized HelperClass getInstance() {
    if (helperClass == null) {
        helperClass = new HelperClass();
    }
    return helperClass;
}

现在你应该在任何你想引用HelperClass 实例的地方使用这个方法。希望这会有所帮助。

【讨论】:

  • 如何从我的活动中调用它?
  • @Amanni, HelperClass helperClass = HelperClass.getInstance();
【解决方案2】:

如果你想要私有构造函数,你可以从 HelperClass 中创建单例。

【讨论】:

    【解决方案3】:

    您的Helper 类没有public 构造函数,因为您已将其标记为private

    或者

    public HelperClass{
    
       private HelperClass(){
       // do some stuff
       }
    
       public static HelperClass newInstance(){
           new HelperClass();
       }
    }
    

    或者使用单例模式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 2019-06-12
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多