0

我正在浏览网络并查找代码示例并尝试理解它们。在这个我相信 super 什么都不做是正确的。在 ecipe 它告诉我它来自 Objects 类。在 Java 中有一个教程。

我正在尝试了解我将对象创建为“ArrayAdapter”和“ListAdapter”之间的联系,并且在 Android 4 开放模板中他们使用“ListFragment”,所以即使我不明白这是我也会相信的正确学习这种将列表添加到页面以进行“主详细信息”选择的方式。

链接Java 教程:: Android 文档:: ArrayAdapter 教程

我想我只是错过了船。

public class Weather {
public int icon;
public String title;

public Weather(){
    super();
}

public Weather(int icon, String title) {
    super();
    this.icon = icon;
    this.title = title;
}
}
4

2 回答 2

6

永远不需要调用super()构造函数,因为如果你不这样做,编译器会为你插入这条指令。

所以

public Foo() {
    // some instructions
}

public Foo() {
    super();
    // some instructions
}

是严格等价的。构造函数必须做的第一件事是调用一个超类构造函数。如果您忘记执行此操作,编译器会通过插入super()调用为您执行此操作。如果超类没有可见的无参数构造函数,则会出现编译错误。

当您想要(或需要)调用super(someArguments)不是无参数构造函数的基类的构造函数时,通常需要调用。

于 2013-03-07T23:55:52.027 回答
0

说 super() 什么都不做是不正确的。它调用其超类的无参数构造函数。即使该类直接从 java.lang.Object 继承,也会调用 Object 的构造函数,尽管它什么也不做。当然 JVM 优化器会很快消除这种无用的调用。

于 2013-03-07T23:58:19.350 回答