声明类中的Java内部类导入

时间:2015-10-04 22:57:35

标签: java

我有一个类:

 package com.example;

 public abstract class AbstractClass<S> {
       //stuffs
 }

然后是一个扩展它的类,并将泛型类型定义为它自己的内部类:

package com.example2;

import com.example.AbstractClass;
import com.example2.MyObject.MyObjectInnerClass;

public class MyObject extends AbstractClass<MyObjectInnerClass> {

     //other stuffs

     public static class MyObjectInnerClass {

     }
}

如果com.example2.MyObject.MyObjectInnerClass保留在同一个文件中,为什么需要导入?

2 个答案:

答案 0 :(得分:3)

import com.example.AbstractClass;
import com.example2.MyObject.MyObjectInnerClass;

public class MyObject extends AbstractClass<MyObjectInnerClass> {

这是必需的,因为嵌套(非内部)类MyObjectInnerClass仅存在{内的不受限制的名称,在extends中使用它之后{1}}子句。

更常规的写作方式是:

import com.example.AbstractClass;

public class MyObject extends AbstractClass<MyObject .MyObjectInnerClass> {

答案 1 :(得分:2)

让我们首先说 - 它不是内部类,它是一个嵌套类(内部类是一个非静态嵌套类)。

由于两个重要原因需要进口:

  1. 它需要知道您的意思是哪个类 - 您也可以将MyObjectInnerClass作为与MyObject相同的包中的类。对此类的无引用引用将指向该类。
  2. 这就是嵌套类的用途 - 在逻辑层次结构中对类进行分组。
  3. 请注意,习惯上,而不是导入,写MyObject.MyObjectInnerClass来强调两者之间的关系。