gpt4 book ai didi

java - 子类化和泛型

转载 作者:行者123 更新时间:2023-12-01 12:13:17 25 4
gpt4 key购买 nike

请注意:尽管此问题专门涉及 Hystrix ,它实际上更多的是关于 Java 泛型,并且可以这样回答。

我正在尝试子类化 HystrixCommand使用 BaseCommand ,然后可以由我的应用程序的其余部分进行子类化。这个BaseCommand将包括其他命令子类可以免费继承的各种好东西。

迄今为止我最好的尝试:

public class BaseCommand<T> extends HystrixCommand<T> {
// Stuff
}

public class FunnyCommand<Widget> extends BaseCommand<Widget> {
// Stuff
}

但这会产生以下编译器错误:

The class com.netflix.hystrix.HystrixCircuitBreaker$UnitTest$BaseCommand refers to the class com.netflix.hystrix.HystrixCircuitBreaker$UnitTest$BaseCommand and uses 1 parameters, but the referred class takes no parameters

它还会产生以下编译器警告:

The type parameter String is hiding the type String

我怎样才能重写这个:

  1. BaseCommandHystrixCommand任何类型的通用类型(T? , ETC。);和
  2. BaseCommand 子类对于任何具体类型(String、Long、Widget 等)都是通用的;和
  3. 不存在编译器错误或警告

这里是 Java 7。

最佳答案

public class FunnyCommand extends BaseCommand<Widget> {

Widget 只是一个类型,因此您不需要将其声明为类型变量。不幸的是,声明和使用看起来很相似,这是一个类似 C 的东西。

在下面的代码中,标识符T用于两个不同的角色。

public class BaseCommand<T> extends HystrixCommand<T> {
^ declare T ^use T

关于java - 子类化和泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27159933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com