Qualcuno là fuori che ha familiarità con Scala sa come utilizzare scala.collection.immutable.Set da Java? Posso leggere vagamente lo scaladoc, ma non sono sicuro di come chiamare i metodi scala come "-" da java (presumo che sia necessario includere alcuni file scala .jar nel mio classpath ...?)esempio di utilizzo di scala.collection.immutable.Set da java
risposta
Scala scrive quei simboli speciali come $ plus, $ meno, ecc. Puoi vederlo da solo eseguendo javap su scala.collection.immutable.HashSet.
che ti permette di fare il codice come questo:
Set s = new HashSet<String>();
s.$plus("one");
Non abbastanza, e in realtà non funziona in fase di esecuzione! Ottieni un NoSuchMethodError. Suppongo che sia relativo a this discussion. Usando la soluzione che discutono, puoi far funzionare le cose:
import scala.collection.generic.Addable;
import scala.collection.generic.Subtractable;
import scala.collection.immutable.HashSet;
import scala.collection.immutable.Set;
public class Test {
public static void main(String[] args) {
Set s = new HashSet<String>();
s = (Set<String>) ((Addable) s).$plus("GAH!");
s = (Set<String>) ((Addable) s).$plus("YIKES!");
s = (Set<String>) ((Subtractable) s).$minus("GAH!");
System.out.println(s); // prints Set(YIKES!)
}
}
Non è una bellezza !?
Credo Java 7 sta per consentire i nomi dei metodi funky da sfuggiti, quindi forse per allora sarete in grado di fare
s = s.#"-"('GAH!')
Per provare questo, è necessario scala-library.jar dal lib/cartella della distribuzione Scala.
Aggiornamento: sintassi Java 7 corretta, grazie Mirko.
in base alla risposta di Adamo, il seguente funziona bene per me con Scala 2.7.7 in Eclipse:
package com.example.test.scala;
import scala.collection.immutable.HashSet;
import scala.collection.immutable.Set;
public class ImmutableSetTest1 {
public static void main(String[] args) {
Set s0 = new HashSet<String>();
Set[] s = new Set[3];
s[0] = s0.$plus("GAH!");
s[1] = s[0].$plus("YIKES!");
s[2] = s[1].$minus("GAH!");
for (int i = 0; i < 3; ++i)
System.out.println("s["+i+"]="+s[i]);
}
}
che stampa:
s[0]=Set(GAH!)
s[1]=Set(GAH!, YIKES!)
s[2]=Set(YIKES!)
È possibile utilizzare questo se solo per init un insieme di meno di 5 articoli
import scala.collection.immutable.Set;
Set mySet = (Set<String>)new Set.Set1<String>("better")
Set mySet = (Set<String>)new Set.Set2<String>("better","andmore")
Altro Modo per farlo è la seguente:
import scala.collection.JavaConversions$;
import scala.collection.immutable.Set;
import scala.collection.immutable.Set$;
//code
java.util.HashSet hashsSet = new java.util.HashSet<String>();
hashsSet.add("item1");
hashsSet.add("item2");
hashsSet.add("item3");
hashsSet.add("item4");
hashsSet.add("item5");
// this is the mutable set of scala
scala.collection.mutable.Set scalaSet = JavaConversions$.MODULE$.asScalaSet(hashsSet);
//this is immutable set
Set immutable = scalaSet.toSet();
System.out.println(immutable);
- 1. Utilizzo di Tesseract da java
- 2. Esempio di utilizzo TLoginCredentialService
- 3. Utilizzo di Java da C++
- 4. Un esempio di utilizzo di LibSVM in java
- 5. LocationServices Android.GeofencingApi esempio di utilizzo
- 6. dare un esempio di utilizzo cyirillic in java regex
- 7. Utilizzo di Java 8 S4U2Proxy - Un buon esempio necessario
- 8. Esempio di bitSet Java
- 9. Esempio di thread Java?
- 10. Esempio di utilizzo di asserzione in Python?
- 11. Un buon esempio di utilizzo di libpurple?
- 12. Utilizzo di Java ReferenceQueue
- 13. Utilizzo di FFMPEG e url_fopen esempio
- 14. Tipi generati Esempio di utilizzo del provider
- 15. C# equivalente di Java esempio di inizializzazione
- 16. plug-in avro gradle esempio di utilizzo
- 17. CreateProcessWithTokenW - Esempio di utilizzo in C#
- 18. Esempio di un metodo di istanza? (Java)
- 19. Esempio di utilizzo di helper di ricerca Handlebars
- 20. Esempio di JSON Web Token per Java
- 21. Esempio di Akka EventBus per Java
- 22. Utilizzo di @Nullable in Java
- 23. Ho bisogno di un esempio di utilizzo Ypsilon
- 24. Esempio di utilizzo di feature.forEachProperty() in Google Maps javascript v3?
- 25. Esempio di utilizzo di AdditionalMetadata in MVC 3
- 26. Esempio di utilizzo di named pipe in Linux Bash
- 27. Sintassi e utilizzo di esempio di _Generic in C11
- 28. Semplice esempio di utilizzo di __setstate__ e __getstate__
- 29. Localizzazione di d3.js (esempio di utilizzo d3.locale)
- 30. Utilizzo di Java per scaricare file da un URL HTTPS
Sfortunatamente, la sintassi di Java 7 per chiamare nomi esotici (http://bugs.sun.com/view_bug.do?bug_id=6746458) non è poi così bella: s = s. # "-" ('GAH!') –
Non sto usando Scala 2.8.0 (che ha tutto quel materiale Addable/Subtractable) e non ho avuto bisogno di usare il cast ... la chiave per me era la denominazione (es "$ plus" e "$ meno") e la scala-library.jar - grazie! –