gpt4 book ai didi

java - 是否使用泛型?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:29 24 4
gpt4 key购买 nike

我有以下类层次结构

public abstract class MyAbstractClass {

}

public abstract class AbstractClassA extends MyAbstractClass {

}
public class AbstractClassB extends MyAbstractClass {

}
public class ClassA extends AbstractClassA {

}
public class ClassB extends AbstractClassA {

}

我有一个转换器,它应该接受扩展 AbstractClassAclass 实例,并且应该返回 classinstance > 扩展 AbstractClassB。我有两个版本的转换类,一个使用 Generic,另一个不使用。两者都有效。但是指定转换器签名的正确方法是什么?

public class ConverterTwo {
public AbstractClassB convert(AbstractClassA a) {
}
}

public class ConverterOne {
public <A extends AbstractClassA, B extends AbstractClassB> B convert(A a) {
}
}

最佳答案

泛型仅在编译时检查,并在编译期间替换为正确的类型。

ConverterTwo 代码在编译过程中会被转换为ConverterOne 类型的代码,因此两者是等价的。

当您编写 API 时您不知道 API 的使用者将传递哪种对象,泛型尤其有用。在您的情况下,如果您打算编写通用适配器。

泛型的经典示例:集合接口(interface)和实现它的类。

关于java - 是否使用泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22293264/

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