声明类中的Java静态类导入

ras*_*cio 3 java import

我有一个类:

 package com.example;

 public abstract class AbstractClass<S> {
       //stuffs
 }
Run Code Online (Sandbox Code Playgroud)

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

package com.example2;

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

public class MyObject extends AbstractClass<MyObjectInnerClass> {

     //other stuffs

     public static class MyObjectInnerClass {

     }
}
Run Code Online (Sandbox Code Playgroud)

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

use*_*421 5

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

public class MyObject extends AbstractClass<MyObjectInnerClass> {
Run Code Online (Sandbox Code Playgroud)

它是必需的,因为嵌套的(不是内部的)类MyObjectInnerClass只在 中存在一个非限定名称{,它出现在extends子句中使用它之后。

一种更传统的写作方式是:

import com.example.AbstractClass;

public class MyObject extends AbstractClass<MyObject .MyObjectInnerClass> {
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案,因为它实际上给出了原因。 (2认同)