gpt4 book ai didi

java - 在 switch 语句中使用 java.lang.Class

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

我正在尝试使用 Class<?>在 if 语句中,如下所示:

public static Model get(Class<? extends FooBase> type, long id )
{
switch (type)
{
case FooType.class:
return new Foo(id);
break;
}
}

但是,行:case FooType.class:给我错误,

Expected Class<capture<? extends FooBase>> , given Class<FooType.class> .

FooType确实实现了 FooBase界面。

是否无法在 Class<?> 上进行切换?值(value)观?

最佳答案

根据 the JLS, Section 14.11,您不能使用 Class 作为 switch 语句的表达式:

The type of the Expression must be char, byte, short, int, Character, Byte, Short, Integer, String, or an enum type (§8.9), or a compile-time error occurs.

您可以直接比较Class 对象。因为每个实际类只有一个 Class 对象,所以 == 运算符在这里起作用。

if (type == FooType.class)

关于java - 在 switch 语句中使用 java.lang.Class<?>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22185706/

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