Java 在IntelliJ IDEA中,扩展有类型和无类型的泛型类会给出不同的实现方法?

Java 在IntelliJ IDEA中,扩展有类型和无类型的泛型类会给出不同的实现方法?,java,generics,intellij-idea,apache-flink,Java,Generics,Intellij Idea,Apache Flink,我试图在ApacheFlink中扩展具有以下签名的org.apache.flink.api.common.io.FileInputFormat类 public abstract class FileInputFormat<OT> extends RichInputFormat<OT, FileInputSplit> {} 它(第一个类-FileInputFormat)有两个抽象方法public boolean reachedEnd()和public OT nextRec

我试图在ApacheFlink中扩展具有以下签名的
org.apache.flink.api.common.io.FileInputFormat

public abstract class FileInputFormat<OT> extends RichInputFormat<OT, FileInputSplit> {}
它(第一个类-
FileInputFormat
)有两个抽象方法
public boolean reachedEnd()
public OT nextRecord(OT重用)

现在,如果我将类型扩展为

public class MyInputFormat<T> extends FileInputFormat<T>{}
public class MyInputFormat extends FileInputFormat{}
然后IntelliJ建议在
InputFormat
接口中实现另外两种方法,它们已经在
FileInputFormat
类中实现了。这些方法是
公共InputSplitAssigner getInputSplitAssigner(InputSplit[]inputSplits)
公共作废打开(InputSplit split)

事实上,这些是编译程序所必需的,尽管人们可能更愿意覆盖它们


对这种行为有何逻辑推理?

我认为这是IntelliJ的一个特点。建议的另外两种方法取决于超级接口“InputFormat”中定义的某些通用参数

显然,IntelliJ假设在删除泛型类型时,应该重写对其他方法的调用

这看起来就像一个小错误:在Java中使用原始类型时,类型参数应该默认为其下限(这里“Object”表示“T”)。
但在这种情况下,“FileInputFormat”(即“FileInputSlit”)的定义参数也会被删除。

我认为这是IntelliJ的一个特点。建议的另外两种方法取决于超级接口“InputFormat”中定义的某些通用参数

显然,IntelliJ假设在删除泛型类型时,应该重写对其他方法的调用

这看起来就像一个小错误:在Java中使用原始类型时,类型参数应该默认为其下限(这里“Object”表示“T”)。
但是在这种情况下,“FileInputFormat”(即“FileInputSlit”)的定义参数也会被删除。

不使用类型进行扩展是没有意义的。如果
MyInputFormat
不应是泛型类,则需要指定要用于FileInputFormat的实际数据类型:
public类MyInputFormat扩展FileInputFormat{}
是的,我理解。我只是想知道是什么导致了这种奇怪的行为?没有类型的扩展是没有意义的。如果
MyInputFormat
不应是泛型类,则需要指定要用于FileInputFormat的实际数据类型:
public类MyInputFormat扩展FileInputFormat{}
是的,我理解。我只是想知道是什么导致了这种奇怪的行为?
public class MyInputFormat extends FileInputFormat{}