2

嗨,我正在查看 Android API 中的这种语法,发现它有点奇怪。

java.lang.Object  
   ↳    android.graphics.BitmapFactory.Options

公共静态类 BitmapFactory.Options

我从来没有见过带'.'的课程。在它的中间。他们为什么不直接调用“BitmapFactoryOptions”类?

然后我更加困惑,因为我在一本书中看到了这段代码

final BitmapFactory.Options options = new BitmapFactory.Options();

BitmapFactory 是静态的,但我们正在创建它的实例?

4

3 回答 3

3

添加到@dasblinkenlight 答案,代码可能如下所示:

public class BitmapFactory {
  public static class Options {
  }
}

确实如此,请参阅BitmapFactory 的源代码

于 2013-11-09T13:33:00.337 回答
2

他们没有用一个点来命名这个类(那是非法的)。他们所做的只是添加一个名为的静态内部类Options- 类的成员BitmapFactory类。

当所讨论的类或接口本身没有意义时,这是一种将类隐藏在其外部类中的常用方法,并且必须仅在其外部类的上下文中进行解释。

当然,您建议的解决方案(命名 class BitmapFactoryOptions)也是完全有效的。但是,它给人一种错误的印象,即该类可以单独使用。

可能最常用的例子就是Map.Entry<K,V>接口:地图条目只有在它们周围有地图时才有意义,因此嵌套非常有用。

于 2013-11-09T13:31:15.137 回答
0

就像任何其他类变量和类方法一样,类中也可以有类。以下示例显示了使用相同语法访问的所有三种类成员。

public class Person{

     public static long totalPopulation;
     public static void calculateAge(Date dob){
     }
     public static class Address{
     }
}

所有这些都将以相同的方式访问。IE,

Person.totalPopulation = 700_000_0000L;
Person.calculateAge(person.getDOB());
Person.Address address = new Person.Address();
于 2013-11-09T13:59:08.227 回答