【问题标题】:Use Method from another class without constructor在没有构造函数的情况下使用另一个类的方法
【发布时间】:2013-01-20 11:50:04
【问题描述】:

我正在尝试使用另一个类的方法,但我认为我不能真正使用构造函数 这是第一堂课:

public class Rules {
    public Rules(int size) {
        //body
    }

    public void methodINeed() {

    }
}

我想在我的第二堂课中使用其中的方法, 但是因为如果我使用构造函数,我必须给出一个 int,基本上 搞砸了我的计算,我不知道该怎么办, 我的可能性是什么?

【问题讨论】:

  • 可以将方法设为静态吗?
  • 您可以将方法设为静态。这样您就不需要创建 Rules 的实例。不过,我不确定我是否理解提供构造函数参数会如何影响您的计算。

标签: java methods constructor


【解决方案1】:

只需创建另一个空的构造函数:

public class Rules{
  public Rules(int size){
    //body
  }

 public Rules()
 {
    //body
  }

  public void methodIneed(){

  }
}

然后访问你需要的方法,

Rules x = new Rules();
x.methodINeed();

【讨论】:

  • 这可能会破坏其他依赖于现有构造函数初始化的方法。
  • 是的,我什至不能通过我的第二个构造函数使用方法,它也会使一切重复,你认为我应该为方法使用单独的类吗?
【解决方案2】:

如果您将这些方法声明为静态,您可以访问其他类的方法而无需构造它们:

public class Rules{
  public Rules(int size){
    //body
  }
  public static void methodIneed(){

  }
}

【讨论】:

  • 鉴于没有无参数构造函数,并且该方法还不是静态的,我怀疑methodIneed() 需要由构造函数初始化,但也许 OP 可以对这种情况有所了解。
  • 是的,但是如果我需要的方法被设置为更改我想显示一个充满信息的板,静态会阻碍我这样做吗?
  • 您可以访问静态方法中的所有信息/字段,只要您的字段也被声明为静态。如果你能做到这一点,你就可以走这条路。
  • 如果您的方法没有访问非静态类中的任何其他内容,那么不会。您不能从静态上下文访问实例变量。
【解决方案3】:

我认为你必须审查你的类的设计,为什么在地球上你必须调用其他类中的方法来进行计算???

可能的解决方案:

  • 混合两个类
  • 添加第三个类(例如 Helper 类)并调用 HelperClass.calculateForMe(sth)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 2010-12-23
    相关资源
    最近更新 更多