Scala: Wie erzwinge das Umbrechen einer Ganzzahl als Objekt?

9

Ich erhalte hier einen Fehler:

%Vor%

Wie kann ich diese 1 in ein Integer-Objekt in Scala konvertieren? Mein Ziel ist es, es an ein Array[Int with Object] zu übergeben. Es zeigt derzeit den Fehler an:

%Vor%

BEARBEITEN

Ich habe diesen Fehler, weil ich einen android ArrayAdapter verwende. von scala, und deshalb:

%Vor%

es wirft mir diesen Fehler:

%Vor%

Also muss ich T durch T <: Object in class ImageAdapter[T <: Object](ctx: ...

ersetzen     
Mikaël Mayer 25.05.2013, 16:16
quelle

1 Antwort

27

Int ist ein Scalatyp, der in der Regel dem int von Java entspricht, bei der Boxierung jedoch auf java.lang.Integer abgebildet wird. Ob es verpackt ist oder nicht, ist meist in Scala transparent.

In jedem Fall ist Int definitiv kein Untertyp von java.lang.Object . Tatsächlich ist Int ein Untertyp von AnyVal , der kein Untertyp von java.lang.Object ist. Daher ist Int with Object ziemlich unsinnig, da Sie keinen konkreten Typ haben können, der sowohl ein Int als auch ein java.lang.Object ist.

Ich denke, was du meintest, ist eher etwas wie:

%Vor%

Oder eher idomatisch:

%Vor%

Natürlich kompiliert nichts davon, aber Sie können das Boxen des Int -Werts erzwingen, indem Sie auf AnyRef :

umlegen %Vor%

Anders als im allgemeinen Fall ist das Casting von AnyVal auf AnyRef immer sicher und erzwingt das Boxen.

Sie können auch die spezifischere Funktion Int.box verwenden:

%Vor%     
Régis Jean-Gilles 25.05.2013, 16:39
quelle

Tags und Links