Java类声明 - 有一个'。'和静态类

时间:2013-11-09 13:28:46

标签: java android

您好我从Android API查看此语法并发现它有点奇怪。

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

公共静态类 BitmapFactory.Options

我从未见过带过'。'的课程。在它的中间。为什么他们不只是调用类'BitmapFactoryOptions'?

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

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

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

3 个答案:

答案 0 :(得分:3)

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

public class BitmapFactory {
  public static class Options {
  }
}

确实如此,请参阅source code for BitmapFactory

答案 1 :(得分:2)

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

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

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

也许最常用的例子是Map.Entry<K,V>接口:只有当地图周围有地图时,地图条目才有意义,所以嵌套非常有用。

答案 2 :(得分:0)

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

public class Person{

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

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

Person.totalPopulation = 700_000_0000L;
Person.calculateAge(person.getDOB());
Person.Address address = new Person.Address();