9
Od Scala, używam biblioteki Java, która oczekuje argumentu klasy. Przykład:scala - pobierz klasę z ciągu znaków
def service: OAuthService = new ServiceBuilder()
.provider(classOf[RunApi])
RunApi jest klasą Java.
Chciałbym jednak móc przekazywać różne klasy dostawcom. Mam ich listę w formacie String.
Przykład, jeśli znam RunApi w formacie String; na przykład "com.me.RunApi", jak skonstruować odpowiednik powyższego kodu?
Dzięki, myślałem, że to będzie działać, ale: [błąd] (org.scribe.builder.api.Api) org.scribe.builder.ServiceBuilder [Błąd ] (java.lang.Class [_ <: org.scribe.builder.api.Api]) org.scribe.builder.ServiceBuilder [błąd] nie można zastosować do (java.lang.Class [? 0 (w usłudze metody)]) [błąd] .provider (Class.forName ("com.me.RunApi")) [błąd]^ [błąd] jeden błąd został znaleziony –
Wystarczy rzucić go do wymaganego typu: 'Class.forName (" com.me.R unApi "). AsInstanceOf [Klasa [_ <: org.scribe.builder.api.Api]]'. –
Dzięki. Próbowałem tego równie dobrze jak Class.forName ("com.me.RunApi"). AsInstanceOf (Api), ale: java.lang.Class nie można przesyłać do org.scribe.builder.api.Api. RunApi rozszerza abstrakcyjną klasę nadrzędną, która implementuje interfejs API. –