gpt4 book ai didi

java - 如何在Java中的泛型中给出And条件

转载 作者:行者123 更新时间:2023-12-04 04:43:55 27 4
gpt4 key购买 nike

我们有一个像 A<-B<-C<-D<-E<-F 这样的类结构(B 扩展 A,C 扩展 B,依此类推)。

我需要创建一个方法acceptList(List<> list)以这样一种方式,它可以接受 List类别 A,C,E并且不接受 B,D,F 的列表.

这个问题是在一次采访中问我的。

最佳答案

像这样的一些技巧可能会起作用,请记住接口(interface)总是会击败反射......因此,如果你可以直接在你的接口(interface)中实现那些依赖于类型的函数,那么就去做吧。

首先你的类的实现:

public class A {

public boolean isAcceptable() {
return true;
}

static class B extends A {

@Override
public boolean isAcceptable() {
return !super.isAcceptable();
}
}

static class C extends B {
@Override
public boolean isAcceptable() {
return !super.isAcceptable();
}
}

static class D extends C {
@Override
public boolean isAcceptable() {
return !super.isAcceptable();
}
}

static class E extends D {
@Override
public boolean isAcceptable() {
return !super.isAcceptable();
}
}

static class F extends E {
@Override
public boolean isAcceptable() {
return !super.isAcceptable();
}
}

}

然后你的acceptList(~):
public static boolean acceptList(List<? extends A> list){
for (A a : list) {
if(!a.isAcceptable()){
return false;
}
}
return true;
}

关于java - 如何在Java中的泛型中给出And条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18485679/

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