![]() |
1
12
不幸的是,没有合法的演员阵容可以满足这种情况。必须有一个已知的类型来实现所有需要作为边界的接口,以便可以强制转换到它。可能是为此目的创建的类型,也可能是某个现有类型。
如果知道其他类型,比如
您也可以使用委托,创建自己的类
|
![]() |
2
17
Java 8介绍了
casting with additional bounds
. 你可以投一个
因此:
就这样:
|
![]() |
3
7
这似乎表明您将对所讨论的对象执行多个操作。 我认为,如果您在对象上执行的所需操作足够独特,可以跨接口分离,那么它们就足够独特,值得拥有自己的方法。 很可能您可以重新构造此代码以调用单独的方法来执行所需的操作。这可能会使整个操作从客户机的角度更加清晰。 而不是:
它变成:
|
![]() |
4
5
通过将联合类型编码为方法的类型参数的可怕方法,可以“向上强制转换”为联合类型;对于您的示例,您可以编写
|
![]() |
5
-1
作为解决方法,您可以定义另一个扩展foo和bar的接口foo bar,并让您的类实现它。它甚至不必是顶级接口——如果不想混乱或修改其余代码,可以将其声明为私有:
|