Osobní stránky

Přetypování proměnné ve Scale

Jazyk Scala je plně kompatibilní s Javou, můžete ve svém scalovském kódu používat jakékoliv knihovny napsané v Javě. Výsledný kód se totiž kompiluje do stejného bytecode. Při psaní programů v Javě se občas hodí přetypovat proměnné podle typu. Příklad, kdy je nutno přetypovat kód v Javě:

URL url = new URL("http://www.jakubskvara.cz");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

Metoda openConnection standardně vrací objekt URLConnection, musíme tedy tento objekt přetypovat na HttpURLConnection.

Scala nemá vlasní objekty pro práci se sítí, používají se tedy Javovské třídy z balíku java.net.*. Pokud chceme předchozí kód vykonat ve Scale, budeme mít problém, protože Scala nepodporuje přetypování pomocí uvedení typu v závorkách před proměnnou. Musíme tedy využít Scalovský způsob přetypování následujícím způsobem:

val url = new URL("http://www.jakubskvara.cz")
val conn = url.openConnection.asInstanceOf[HttpURLConnection]

Použijeme metodu asInstanceOf a v hranatých závorkách uvedeme jméno třídy, na kterou chceme naši proměnnou přetypovat. Tato metoda je implementována ve třídě scala.Any. Jedná se o třídu, od které dědí všechny ostatní třídy ve Scale, stejně jako java.lang.Object v Javě. Chování této metody je stejné jako v Javě, jde pouze o odlišnou syntaxi.

Jakub Škvára


Jakub je cestovatel, blogger a webový vývojář. Zajímá se především o technické novinky a rád navštěvuje konference. Používá: Symfony2 Framework, AngularJS, NodeJS, MongoDB a další moderní technologie. Aktuálně žije v Londýně.