Java泛型:方法级别与接口级别定义的泛型参数

塞夫

我遇到以下与泛型有关的问题。我有以下几点:

InterfaceA为:

public interface InterfaceA {
    public <T extends DTOInterface> Object methodName (T dto) {}
}

DTOInterface只是一个空接口。

那么我的实现将是:

public class ImplementationA implements InterfaceA {
    public Object methodName(DTOImplementation dto) {
        return null;
    }
}

DTOImplementation只是实现DTOInterface的类。

之所以失败,是因为ImplementationA中的方法未被识别为InterfaceA中该方法的有效实现。

但是,如果我在接口级别定义参数,即

public interface InterfaceA **<T extends DTOInterface>** {
    public Object methodName (T dto) {}
}

然后将实现定义为:

public class ImplementationA implements **InterfaceA<DTOImplementation>** {
    public Object methodName(DTOImplementation dto) {
        return null;
    }
}

确实有效。该方法被认为是有效的实现。

有人知道为什么会这样吗?

雅各布

第一个声明说,为了实现InterfaceA,子类需要提供一种方法methodName该方法适用于方法调用者选择的任何T扩展类型换句话说,是调用者可以选择的参数实现的类不会选择它。因此,当您提供尝试选择for的特定值并仅实现该值的实现时,编译器将拒绝您的程序。DTOInterface TmethodNameInterfaceATmethodName

另一方面,第二个声明是一个接口,该接口允许实现者为该特定值提供特定的值,T并且仅为该特定的选择实现其方法。ImplementationA选择InterfaceA仅针对()的一个特定子类型实现DTOInterfaceDTOImplementation并仅针对的选择提供一种方法T很好

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java泛型:方法级别与接口级别定义的泛型参数

来自分类Dev

使用类级别的泛型有界类型参数作为方法的形式参数

来自分类Dev

接口方法Java中的泛型类型

来自分类Dev

从 Java 接口实现泛型方法

来自分类Dev

Java泛型参数

来自分类Dev

与泛型类型方法的接口

来自分类Dev

Java泛型接口转换

来自分类Dev

无法将在方法级别声明的泛型类型用于需要在其他地方声明的泛型类型的方法参数

来自分类Dev

Java泛型方法

来自分类Dev

Java接口泛型,返回类型取决于参数泛型

来自分类Dev

带接口的泛型方法的边界类型参数?

来自分类Dev

泛型接口,带有泛型的泛型接口

来自分类Dev

通过泛型在java中制作泛型接口

来自分类Dev

泛型方法参数的行为

来自分类Dev

参数中的Java泛型

来自分类Dev

Java泛型与参数 - 继承

来自分类Dev

为什么在Java中可以将接口的泛型方法实现为非泛型?

来自分类Dev

与泛型的接口

来自分类Dev

Java泛型:定义泛型类时的通配符和类型参数语法

来自分类Dev

Java 泛型:如何在泛型接口中获取泛型类的 Id?

来自分类Dev

在Java中使用泛型和反射实现接口方法

来自分类Dev

Java-如何创建调用接口方法的泛型类?

来自分类Dev

使用Java泛型接口/抽象类的构造方法

来自分类Dev

泛型-调用带有泛型参数的方法

来自分类Dev

Java泛型-获取泛型参数的实际类型

来自分类Dev

Java泛型-获取泛型参数的实际类型

来自分类Dev

如何从泛型定义和泛型参数获取泛型类型?

来自分类Dev

如何从泛型定义和泛型参数获取泛型类型?

来自分类Dev

如何实现接口泛型方法