gpt4 book ai didi

java - Java 中的部分泛型

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:01:18 25 4
gpt4 key购买 nike

所以我有一个接口(interface) -

public interface GenericTranslator <From, To> {
To translate(From from);
}

并有一个实现它的类

public class TimeToStringTranslator implements GenericTranslator <Time, String>  {
String translate(Time time) { ... }
}

但我现在想要一个抽象层,其中输入类型 FromTime

// an abstract class with partial generic defined
public abstract class AbstractTimeTranslator<Time, To> implements GenericTranslator<Time, To> {

@Override
To translate(Time time) {
doSomething();

return translateTime(time);
}

protected abstract To translateTime(Time time);
}

// concrete class
public class TimeToStringTranslator extends AbstractTimeTranslator<Time, String> {
String translateTime(Time time) { .... }
}

在 Java 中可以吗?我试过了,Java 将 Time 视为 AbstractTimeTranslator

中的通用名称

最佳答案

如果 Time 是一个实际类型参数而不是另一个泛型类型参数,那么您不应该在 的类定义中将 Time 声明为泛型类型参数抽象时间翻译器;只需将其用作 implements 子句中的类型参数即可。

这只定义了这个类中的 To 类型参数。

abstract class AbstractTimeTranslator<To> implements GenericTranslator<Time, To> {

因此,您只需在具体子类的 extends 子句中提供一个类型参数。

class TimeToStringTranslator extends AbstractTimeTranslator<String> {

关于java - Java 中的部分泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35188741/

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