我正在尝试Class<?>在if语句中使用,如下所示:
public static Model get(Class<? extends FooBase> type, long id )
{
switch (type)
{
case FooType.class:
return new Foo(id);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这行:case FooType.class:给我错误,
Expected Class<capture<? extends FooBase>> , given Class<FooType.class>。
FooType确实实现了该FooBase接口。
不能打开Class<?>数值吗?
Class根据JLS,第14.11节,您不能将a 用作switch语句的表达式:
表达式的类型必须为char,byte,short,int,Character,Byte,Short,Integer,String或枚举类型(第8.9节),否则会发生编译时错误。
您可以Class直接比较对象。因为Class每个实际的类只有一个对象,所以==操作员在这里工作。
if (type == FooType.class)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
739 次 |
| 最近记录: |