¿Podemos escribir código Scala dentro de un programa Java?

Justo en la página principal de scala-lang.org :

INTEROPORTE INCONSÚTIL DE JAVA: Scala se ejecuta en la JVM, por lo que las pilas de Java y Scala se pueden mezclar libremente para una integración totalmente fluida.

Y si hace clic en él, le brinda esta información adicional:

Combina Scala y Java sin problemas

Las clases Scala son, en última instancia, clases JVM. Puede crear objetos Java, llamar a sus métodos y heredar de clases Java de forma transparente desde Scala. Del mismo modo, el código Java puede hacer referencia a clases y objetos Scala.

En este ejemplo, la clase Scala Author implementa la interfaz Java Comparable y trabaja con Java Files. El código Java utiliza un método del objeto complementario Author y accede a los campos de la clase Author. También usa JavaConversions para convertir entre colecciones Scala y colecciones Java.

Con este ejemplo:

Author.scala:

class Author(val firstName: String,
    val lastName: String) extends Comparable[Author] {
  override def compareTo(that: Author) = {
    val lastNameComp = this.lastName compareTo that.lastName
    if (lastNameComp != 0) lastNameComp
    else this.firstName compareTo that.firstName
  }
}
object Author {
  def loadAuthorsFromFile(file: java.io.File): List[Author] = ???
}

App.java:

import static scala.collection.JavaConversions.asJavaCollection;
public class App {
    public List<Author> loadAuthorsFromFile(File file) {
        return new ArrayList<Author>(asJavaCollection(
            Author.loadAuthorsFromFile(file)));
    }
    public void sortAuthors(List<Author> authors) {
        Collections.sort(authors);
    }
    public void displaySortedAuthors(File file) {
        List<Author> authors = loadAuthorsFromFile(file);
        sortAuthors(authors);
        for (Author author : authors) {
            System.out.println(
                author.lastName() + ", " + author.firstName());
        }
    }
}

Su ejemplo es probablemente al revés, usando clases Java en una aplicación Scala, pero dado que al final del día son solo clases JVM (y el ejemplo anterior usa clases Java, como java.io.File, en el código Scala), es lo mismo .

Respuesta 1

Actualmente estoy usando hibernate-sqlite. Para acceder a bases de datos sqlite creadas dinámicamente, esto funciona perfectamente. Ahora quiero asegurar los archivos sqlite. Después de un poco de investigación descubrí que el camino a seguir es (...

Tengo varios Nodo, Token y otras clases. Cada clase tiene su propia enumeración de tipo. Tengo listas de nodos, y listas de tokens, y listas de otras cosas. Y a menudo quiero ver si hay algún artículo ...

Como en el tema, me gustaría usar un método Java que tome una función como argumento y proporcionarle una función Clojure, ya sea anónima o normal. Alguien tiene alguna idea de cómo hacer eso?

Tengo una matriz String [] en Java, y primero debo codificarla / convertirla en una String y luego en el código convertirla nuevamente en la matriz String []. El caso es que puedo tener cualquier personaje en un ...