我有一个类:
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
如果它留在同一个文件中,为什么需要导入?
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)