有关Java文档及其实现的问题

时间:2018-12-13 20:00:28

标签: java arrays object

我目前正在参加一个练习,希望我根据已经完成的文档HTML表格创建Java程序。 例如,一个条目状态

  

reversedArray

public static Object[] reversedArray(Object[] array)

基于名称,我们可以假设该方法应按array的相反顺序返回一个数组。

现在我的问题不是关于如何创建所述数组,而是更多关于Object[]术语。这是什么意思?我应该通过重载每个特定数组类型(例如String[]int[],...)还是字面意义上的Object[]来创建一堆方法吗?

是后者,对象数组如何工作?基于名称,我假设它是一个可以容纳对象的数组,但是我不确定这在实践中意味着什么。

2 个答案:

答案 0 :(得分:1)

Object[]基本上只是一个对象数组(请在此处获得最佳解释奖--------☐)

开玩笑,在Java中,任何对象都是从类Object派生的,因此,基本上,该数组可以存储任何类的任何对象。当您只想携带一个不同类的实例(或多个实例)时,它最有用,但是所述实例的类型并不重要。

假设您有多个不一定相关的类:

Class Dog {
    String name;

    public Dog(String name) {
        this.name = name
    }

    public String toString() {
        return "Hello! I am a dog called " + this.name;
    }
}

Class Refrigerator {
    public Refrigerator() {
    }

    public String toString() {
        return "I am a refrigerator";
    }
}

由于两个类都是从Object隐式派生的,并且Object实现了方法toString(),因此您可以在两个类声明中覆盖该方法。

然后,您可以将这些实例的任何实例存储在Object中,并调用方法toString(),如下所示:

Dog myDog = new Dog("Spike");
Object anyObject = myDog;
System.out.println(anyObject.toString());   //would print the result of your "toString()" method in the Dog class : 
                                            //"Hello! I am a dog called Spike"


Refrigerator myFridge = new Refrigerator();
Object secondObject = myFridge;
System.out.println(secondObject.toString());    //would print the result of your "toString()" method in the Refrigerator class : 
                                                //"I am a refrigerator"

这允许您创建一个接受任何对象并将其视为相同并在参数中分配任何对象的方法:

public void printWhatYouAre(Object o) {
    System.out.println(o.toString());
}

public void doingSomething() {
    Dog myDog = new Dog("Spike");
    Refrigerator myFridge = new Refrigerator();

    printWhatYouAre(myDog);
    printWhatYouAre(myFridge); //would print the same as above
}

在您的情况下,您的方法只需要重新排列一个数组,这意味着它甚至不需要方法toString,也不需要知道对象是什么。它只需要以不同的顺序将一个事物数组存储到另一个事物数组中即可。


Here是有关Java多态性的不错的读物,它基本上适用于任何语言,但是使用的示例是用Java编写的。 The whole site实际上是一个很好的参考,因此值得一看,尤其是与您的帖子最相关的OOP部分。 ;)

答案 1 :(得分:1)

  

顾名思义,该方法应在以下位置创建一个新数组   “数组”的颠倒顺序。

方法名称仅表示“反转”数组;如果不清楚,仅仅是修改实际提供的数组还是构造一个新数组,就需要与需求的作者澄清。

  

现在我的问题不是关于如何创建所述数组,而是更多关于   “ Object []”术语。基本上,我不确定该怎么做。是否   说“ Object []”的意思是,我应该通过创建一堆方法   用特定的数组类型重载每个数组(例如String [],int [],...)   或字面上是Object []数组?

否,您只需要为原始类型(即int[]long[]等)创建重载,并且仅在您的要求如此的情况下。前述方法应该能够使用Object[]String[]Integer[]Double[]等...

  

是后者,对象数组如何工作?基于我的名字   假设,这是一个可以容纳对象的数组,但是我不确定这是什么   在实践中是指。

方法名称与数组可以容纳的内容无关,方法参数是Object的数组,它就这么简单。

阅读可能会有用: