ZeroC Ice pour Java translates chaque interface de tranche Simple
en (entre autres choses) une interface proxy SimplePrx
et un proxy SimplePrxHelper
. Si j'ai un ObjectPrx
(l'interface de base pour toutes les procurations), je peux vérifier si elle possède une interface Simple
fait en utilisant une méthode statique sur SimplePrxHelper
:ZeroC Ice "jetés jette" dans 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...
Je voulais écrire une méthode castTo
pour que je puisse remplacer la deuxième ligne avec
val simple = castTo[SimplePrx](obj)
ou
val simple = castTo[SimplePrxHelper](obj)
pour autant que je peux voir, le système de type Scala est n ot assez expressif pour me permettre de définir castTo
. Est-ce correct?
Pourquoi ne pas simplement 'simple, val = SimplePrxHelper.checkedCast (obj)'? C'est presque aussi court que ce que tu veux. Sinon, je ne comprends pas comment le système _type_ est censé savoir que cette bibliothèque a défini une relation entre les choses appelées 'FooPrx' et' FooPrxHelper', étant donné que la bibliothèque est organisée de cette façon et non comme 'Helper ' CA devrait etre. –
Parce que je suis moins inquiet d'être court que d'être générique. Je ne peux pas, par exemple, utiliser un tel cast à l'intérieur d'une méthode 'foo [AProxyInterface](): AProxyInterface'. –