如何在方法声明而不是类中使用类型参数

nimo23

我有这段代码可以工作:

接口:

public interface Queries<T> {
    List<User> runQuery(T query);
}

并使用界面:

public class UserQueries implements Queries<UserQuery> {

    @Override
    List<User> runQuery(UserQuery q){
    }
}

我想用以下代码替换上面的代码,但是,它不起作用:

新介面:

public interface Queries {
     // I want to pass the type parameter within the abstract method instead of the using Queries<T>
    <T> List<User> runQuery(T query);
}

并使用新的界面(版本2):

public class UserQueries implements Queries {

    // does not work, compiler complains:
    // "The method runQuery(UserQuery) of type UserQueries must override or implement a supertype method
    @Override
    List<User> runQuery(UserQuery q) {
    }
}

如何<T>在类的方法接口中使用类型参数

死侍

您正在尝试混合使用两个概念,一个是泛型​​,另一个是继承。

版本1在版本1中,您具有通用接口

public interface Queries<T>

在实现中,您限制它接受UserQuery类型

public class UserQueries implements Queries<UserQuery> {

版本2在版本2中,您具有使用通用抽象方法的具体接口

public interface Queries {
 // I want to pass the type parameter within the abstract method instead of the using Queries<T>
<T> List<User> runQuery(T query);
}

因此,如果您实现Queries接口,则必须提供所有抽象方法的实现(如果更改方法的签名或方法的语法,则该方法在类中被视为不同的方法,而在接口中则被视为抽象方法)

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Eigen中使用Matrix类型参数声明函数?

如何在Kotlin中使用返回带有类型参数的子类型的方法创建类?

如何根据类方法的返回类型声明参数类型?

如何在接口的方法中使用泛型类型参数

如何在类的方法参数中使用模板

如何在超类方法中使用子类参数?

如何在F#中使用字符串类型列表的auto属性声明类?

如何在具有泛型参数和返回类型方法的Java中使用反射获取类的实例?

如何在类外的签名中使用模板参数的嵌套类型定义模板类函数

如何在ltac中使用类型参数?

如何在LiveData <I>类中使用“ I”作为化类型参数?

如何在Swift中使用没有类型参数的泛型类?

如何在声明式管道中使用NodeLabel参数插件

如何在C#中使用动态参数声明函数

TypeScript 如何在模块声明中使用映射类型?

如何在GO中使用函数类型声明函数

如何在实例声明中使用类型同义词?

如何在TypeScript中使用属性声明函数的类型?

Cython:在类型声明中使用导入的类

如何在Scala的类型类中使用依赖类型?

如何在类中使用扩展的泛型类型的类型?

如何在模板类中使用嵌套类作为类型?

如何在对象类型中使用对象类型对类进行参数化以在Scala中获取其实例?

ByteBuddy:如何在另一个类中使用自定义方法声明一个类

如何在方法中使用&proc参数

如何在cupsEnumDests中使用类方法?

如何在库中使用类的方法?

如何在参数中声明字典类型?

如何在单个约束中同时使用方法和类类型参数?