gpt4 book ai didi

Java泛型方法,如何使两个参数具有相同的类型?

转载 作者:行者123 更新时间:2023-11-29 08:47:04 26 4
gpt4 key购买 nike

我有以下接口(interface)和类:

public interface SomeInterface {
...
}

public class TypeA implements SomeInterface {
...
}

public class TypeB implements SomeInterface {
...
}

我在其他一些类中有以下方法:

public static <T extends SomeInterface> void foo(T a, T b) {
...
}

现在,我如何确保ab是同一类的吗? (要么是 TypeA 要么都是 TypeB ,我想在第一个是 TypeA 而第二个是 TypeB 时得到编译错误)


我找到的一个解决方案是向接口(interface)添加一个类型,如下所示:

public interface SomeInterface<T> {
...
}

public class TypeA implements SomeInterface<TypeA> {
...
}

public class TypeB implements SomeInterface<TypeB> {
...
}

同时修改方法如下:

public static <T> void foo(SomeInterface<T> a, SomeInterface<T> b) {
...
}

这个解决方案有效,但对我来说似乎有点奇怪,因为我必须写两次类名:class A implements SomeInterface<A> .我想知道是否有比上述更好的解决方案。谢谢。

最佳答案

在这种情况下,如果只有这两个接口(interface),我会使用:

public static <T extends SomeInterface> void foo(TypeA a, TypeA b) {
public static <T extends SomeInterface> void foo(TypeB a, TypeB b) {

但是当接口(interface)数量未知时,您的解决方案也可以工作。

关于Java泛型方法,如何使两个参数具有相同的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24669487/

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