Poniższy przykład Scala definiuje klasę wewnątrz obiektu pakiet:Korzystanie klasa Scala zdefiniowane w obiekcie opakowania z Java
package com.mycompany
package object test {
class MyTest {
def foo(): Int = {
42
}
}
}
trzech następujących klas generowane są:
com/mycompany/test/package.class
com/mycompany/test/package$.class
com/mycompany/test/package$MyTest.class
Problem pojawia się podczas próby używać klasy MyTest
z Java. Myślę, że od package$MyTest
zawiera $ w nazwie, Java nie uznaje jej istnienia. Niemniej jednak dostępna jest klasa package$
.
Running javap
na package$MyTest.class
zwrotów:
Compiled from "Test.scala"
public class com.mycompany.test.package$MyTest {
public int foo();
public com.mycompany.test.package$MyTest();
}
Próbowałem dostępu do klasy przy użyciu Eclipse, IntelliJ i Netbeans, bez powodzenia. Czy można używać klas Scala zdefiniowanych w obiektach pakietów z Java?
Jest to przydatne, gdy piszę klasę pakietu, ale nie wtedy, gdy używam biblioteki innej firmy. –