Wie konvertiere ich eine Java-byte-array in eine Scala byte-array?
Ich bin neu in Scala und arbeiten derzeit an einem Projekt, die Einbeziehung der Java-und Scala-Module. Jetzt würde ich mag, um den Anruf eine Scala-Methode aus Java mit einem parameter vom Typ byte[].
Den Scala-Methode hat die Signatur: def foo(data: Array[Byte])
Den Java-Aufruf sieht wie folgt aus: foo(x)
, wobei x vom Typ byte[]
.
Die IDE sagt mir nicht möglich:
The method foo(Array) in the type Bar is not applicable for the arguments (byte[])
Als weitere Einschränkung ist es nicht bevorzugt, zu ändern, die Scala-Methode. Auf der Java-Seite habe ich versucht, mit Byte[]
, aber das hat das problem nicht lösen. Es muss existieren einige Umstellung?
- Welche IDE benutzt du? Intellij hat kein problem mit ihm.
- Sind Sie mit 2.8 oder höher?
Array[Byte]
istbyte[]
als der 2.8, so dass, wenn Sie für die IDE meckert die IDE ist falsch. - Ich bin mit Eclipse 3.6.2 Helios mit installiert Scala IDE for Eclipse 2.0.0-beta4. Das Projekt gliedert sich in Maven-Module, in denen sowohl Scala-und Java-Moduls: scala-library-2.9.0 als Maven-Abhängigkeit. Ich habe bemerkt, dass die Scala IDE tut seltsame Dinge, die manchmal - wie zeigt imaginären Warnungen und Fehler im Paket-explorer, aber in der Regel die Reinigung und den Wiederaufbau der Projekt hilft (welche ich versucht habe in diesem Fall schon).
- Hmm, das ist interessant: Aufruf
foo(x)
von Java mit x vom Typ (raw -)scala.Array
können meine IDE zurück:The method foo(byte[]) in the type Bar is not applicable for the arguments (Array)
. Das ist, was ich nennen würde, widersprüchlichen Verhalten. Ich sollte versuchen, den code zu kompilieren woanders...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als andere wies darauf hin, es ist kein problem in der Umstellung. Meine IDE verhält sich falsch, und zeigt imaginäre Fehler, die ohne Probleme compilieren. In diesem moment der Aufruf der receive-Methode in der main-Methode folgenden code ist markiert mit der Fehlermeldung:
Aber dieser code, der beispielhaft für meine Frage, kompiliert fein und liefert das erwartete Ergebnis:
Java:
Scala:
Also Java und Scala verstehen einander gut.
Habe ich versucht zu reproduzieren, Ihre Fehler aber es lief wie erwartet.
Ausgeführt mit scala 2.9.0 und sbt
java-code:
scala-code:
Ausgabe: [B@6ef38f6f
Diese kompiliert und ausgeführt wird. Ist es nicht dies, was Sie gefragt wurden? fühlen Sie sich frei zu kommentieren.
Array[Byte]
auf eine Java - (Konstruktor) - Methode erwartetbyte[]
, und ich war auf der Suche nach der Lösung in die andere Richtung. Aber Sie zeigte erfolgreich das funktioniert auch gut. Ich bin überzeugt, meine IDE verhält sich falsch, in der Tat scheint es kein problem mit dem Umbau. Implementiert habe ich ein funktionierendes Beispiel, welches ich nach einer in eine zweite, die gekennzeichnet ist mit Fehler, aber kompiliert und liefert die erwarteten Ergebnisse. Aber danke für deinen code, ich nahm mir die Freiheit, es zu benutzen, als Basis für die Arbeit Beispiel.