ZeroC Ice для Java translates каждый интерфейс Slice Simple
в (помимо прочего) прокси-интерфейс SimplePrx
и прокси SimplePrxHelper
. Если у меня есть ObjectPrx
(базовый интерфейс для всех прокси-серверов), я могу проверить, действительно ли это интерфейс Simple
, используя статический метод на SimplePrxHelper
:ZeroC Ice «проверенные листы» в Scala
val obj : Ice.ObjectPrx = ...; // Get a proxy from somewhere...
val simple : SimplePrx = SimplePrxHelper.checkedCast(obj);
if (simple != null)
// Object supports the Simple interface...
else
// Object is not of type Simple...
Я хотел написать метод castTo
, так что я мог бы заменить вторая линия с
val simple = castTo[SimplePrx](obj)
или
val simple = castTo[SimplePrxHelper](obj)
насколько я могу видеть, тип системы Scala является п достаточно выразительно, чтобы позволить мне определить castTo
. Это верно?
Почему не просто 'val simple = SimplePrxHelper.checkedCast (obj)'? Это почти так же мало, как то, что вы хотите. В противном случае мне непонятно, как система _type_ должна знать, что эта конкретная библиотека определила взаимосвязь между вещами, называемыми «FooPrx» и «FooPrxHelper», учитывая, что библиотека организована таким образом, а не как «Помощник» должен быть. –
Потому что я меньше беспокоюсь о том, чтобы быть коротким, чем быть родовым. Я не могу, например, использовать такой листинг внутри метода 'foo [AProxyInterface](): AProxyInterface'. –