调用LayoutInflater的方法而不创建对象

时间:2019-03-11 18:52:08

标签: java android

我对这段代码感到困惑Relevant Code 在这里,他们使用继承了它的抽象类,最重要的是,他们在不创建对象的情况下调用了方法

P.S。完整代码:-https://github.com/udacity/ud839_CustomAdapter_Example/blob/master/app/src/main/java/com/example/android/flavor/AndroidFlavorAdapter.java

1 个答案:

答案 0 :(得分:1)

因为该方法是 static ,所以他们能够在不创建对象的情况下调用该方法。静态方法不是附加到类的实例,而是附加到类本身,因此您可以调用它们而无需创建 new 任何东西。

例如,如果您有

public class School {
    public String getName() {
        return name;
    }
}

要调用它,您需要创建一个有意义的对象,因为该方法用于获取特定学校的名称。

School school = ...;
String schoolName = school.getName();

但是如果您有这样的静态方法

public class School {
    public static List<School> getAllSchools() {
        ....
    }
}

然后,您不需要n实例来调用它,因为它不依赖于实例,而是依赖于类。

School.getAllSchools();

LayoutInflater.from也是如此。它不是从实例调用的方法;而是创建 LayoutInflater实例的静态方法。

LayoutInflater inflater = LayoutInflater.from(context);

这称为静态初始值设定项,在您要返回某些实例时使用,但构造函数实际上无法工作。例如,如果您使用构造函数(如果可能,则使用new LayoutInflater(...)),那么它每次都会创建一个新对象,但这并不总是最好的。但是静态初始值设定项允许您创建一个对象并保存它,以便您可以再次返回同一对象,这在某些情况下会更好,这是使用静态初始值设定项的主要原因之一,例如LayoutInflater.from