【问题标题】:Calling LayoutInflater's Methods without creating object调用 LayoutInflater 的方法而不创建对象
【发布时间】:2019-03-12 03:16:47
【问题描述】:

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

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

【问题讨论】:

    标签: java android


    【解决方案1】:

    他们能够在不创建对象的情况下调用该方法,因为该方法是静态的。静态方法不附加到类的实例,而是附加到类本身,因此您可以直接调用它们而无需创建 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

    【讨论】:

      猜你喜欢
      • 2014-12-03
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      • 2013-09-24
      • 2013-01-24
      • 2015-04-13
      相关资源
      最近更新 更多