ラムダ式またはメソッド参照の場合は、を除く、をキャストするためにJLS8 cast expressionに記載されているAdditionalBound
を使用できますか?キャスト式のAdditionalBoundの使用
それができることを、言われている:
(ReferenceType {AdditionalBound}) UnaryExpressionNotPlusMinus
とその:
式が(あるキャストによって導入鋳造コンテキスト(§5.5)のターゲット・タイプ.. 。)参照型 で示される交差タイプと、キャスト演算子に表示されるAdditionalBound項。
X x = (I1&I2) some_UnaryExpressionNotPlusMinus
UPD:
しかし、私は非 -lambdaまたは非 -method、参考例で実行可能な例を見つけることができなかったんだ、何かのように言います特に、それは何かを可能にする
X x = (I1&I2) ~ UnaryExpression
、~
は単項演算子です。
この場合、X
,I1
,I2
、UnaryExpression
のいずれかがわからない。
UPD-2: @Jimmy T.のおかげで、彼は
Object x = (Number&Serializable)~0;
の実用例を示しています。
しかし、このようなキャストには意味がある非重複の例を見るとよいでしょう。
UPD-3:
Object l1 = (Collection & Iterable) new ArrayList<>();
List l2 = (ByteList & Iterable) new ArrayList<>();
Collection l3 = (List & Iterable) new ArrayList<>();
は、このようなキャスティングが賢明だろう場合を想像することはできません。すべてのこれらの式がコンパイルされ、上記によると、それらのすべては、いかなる意味を持っていません。
クール、+1を。しかし、このクラスのキャスティングケースは重複しています。 – Andremoniy
メソッドを呼び出すときにキャスティングがより意味を持ちます。 –
'method2(〜0);'もここで動作します – Andremoniy