【问题标题】:Java: How to instantiate the object when a method have the same nameJava:当方法具有相同名称时如何实例化对象
【发布时间】:2021-04-13 17:16:39
【问题描述】:

基本上我的问题是:

我需要在另一个类中使用getter方法,但是相同的类名和方法名很难。

我有一个类 Class1,它有一个方法也叫 Class1(很遗憾,这不能更改)

public class Class1 {

    public ArrayList<Animal> Animals;

    public Class1(int capacity) {
        Animals = new ArrayList<>(capacity);
    }

    public ArrayList<Animal> getTheAnimals(){
        return this.Animals;
    }

我需要在另一个类 Class2 中使用 getter 方法。

public class Class2{
    /**
     * instantiate a Class1 object
     */

    Class1 c1 = new Class1();
    ArrayList<Animal> Animals = c1.getTheAnimals();
}

我遇到了问题,因为我正在实例化方法(需要一个 int)而不是类。

感谢您的帮助。

【问题讨论】:

  • 那你为什么不把int传递给构造函数呢?
  • 类名相同的方法称为构造函数。你所拥有的是一个参数化的构造函数。在尝试解决这个问题之前,请先阅读一下。

标签: java oop


【解决方案1】:

方法public Class1(int capacity) ... 是类Class1构造函数。它是唯一可用的构造函数,因此您必须提供它想要的 int 参数。如果需要,可以定义第二个没有参数的构造函数。

public Class1() {
    Animals = new ArrayList<>();
}

这将使用默认容量实例化Animals

顺便说一句,根据Java的约定,变量应该以小写字母开头,所以应该是animals

【讨论】:

    【解决方案2】:

    我认为如果您使用 class1 的全名,即 .Class1 而不是导入它,您的问题可能会得到解决。这样就解决了。

    喜欢: ,,,

    Class1 c1 = new <package name>.Class1();
    

    ,,,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-06
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 2017-01-19
      • 1970-01-01
      相关资源
      最近更新 更多