Я намерен поместить список объектов Tse в объект Bts в Java:
Bts Object should contain List=
List(Tse(1285927200000,1285928100000,0.0),
Tse(1285928100000,1285929000000,1.0),
Tse(1285929000000,1285929900000,2.0),
Tse(1285929900000,1285930800000,3.0))
У меня есть файлы scala Bts, Ts и Tse:
Bts.scala
trait Bts extends Ts{
def start:Long
def end:Long
def timezone:TimeZone
}
Ц.скала
Object Ts { //Some methods }
trait Ts extends Iterator[Tse] {
//Some methods
}
Це.скала
case class Tse(val start:Long, val end:Long, val value:Option[Double], val elapsed:Long) {
def this(start: java.lang.Long, end: java.lang.Long,
value: java.lang.Double) = {
this(start, end, Option(value), end-start)
}
//Some methods
}
Итак, в коде Java я хочу сделать объект Bts таким, чтобы он содержал следующее:
List(Tse(1285927200000,1285928100000,0.0),
Tse(1285928100000,1285929000000,1.0),
Tse(1285929000000,1285929900000,2.0),
Tse(1285929900000,1285930800000,3.0))
Мой код Java для этого:
Tse tse1= new Tse(1285927200000L, 1285928100000L, 0.0);
Tse tse2 = new Tse(1285928100000L, 1285929000000L, 1.0);
Tse tse3= new Tse(1285929000000L, 1285929900000L, 2.0);
Tse tse4 = new Tse(1285929900000L, 1285930800000L, 3.0);
List<Tse> entryList = new ArrayList<Tse>();
entryList.add(tse1);
entryList.add(tse2);
entryList.add(tse3);
entryList.add(tse4);
Bts bts= (Bts) entryList; //exception
Tsr$ tsr= Tsr$.MODULE$;
tsr.mcall(bts);
Как вы видите, последняя строка дает мне исключение:
Caused by: java.lang.ClassCastException: java.util.ArrayList
cannot be cast to com.testapp.people.user.Bts
ОБНОВЛЕНИЕ
Цр.скала
object Tsr {
def mcall(sourceData: Iterator[Tse]) : Bts = { //Other calls}
}
ОБНОВЛЕНИЕ
Я попытался создать абстрактный класс в Bts, а затем попытался получить к нему доступ из Java:
В Bts.scala добавлено следующее:
abstract class Bs(buffer:Iterator[Tse]) extends Bts{
}
Из джавы:
Iterator<Tse> iterator = entryList.iterator();
Bts bts= new Bs(scala.collection.JavaConversions$.MODULE$.
asScalaIterator(iterator)); //exception
Теперь я получаю ошибку времени компиляции как:
Cannot instantiate the type Bs