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

标签 java android

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

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

最佳答案

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

例如,如果您有

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 .

关于java - 调用 LayoutInflater 的方法而不创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55108519/

相关文章:

java - 在 Java 中加载属性文件

android - 为什么即使设置了 FLAG_SECURE,Google Assistant 也能截取屏幕截图?

Android, Shared Preferences basic 在

java - 使用 JGit 将子模块添加到非空路径

java - 缓存 yield : mobile versus server development

android - Android Video View 上的问题无法正常工作

android - ioctl 返回 ENOENT 尝试将 URB 请求发布到 Isoc 设备端点(从 android 的 JNI 访问)

java - 如何处理ajax确认对话框是或否

java - 从 Servlet 下载 Excel

java - Activity 如何启动一个新 Activity 并自行关闭?