我正在尝试在Scala中初始化Guava synchronizedQueue以进行性能基准测试。
class TestSynchronizedQueueJavaPTS {
private var assignedQForTest : java.util.Queue[Int] = null;
private var syncQueue : java.util.Queue[Int] = null;
def create(DS_Type : String) : java.util.concurrent.ConcurrentLinkedQueue[Int] ={
DS_Type match{
case "syncQueue" =>
syncQueue = com.google.common.collect.Queues.synchronizedQueue(com.google.common.collect.MinMaxPriorityQueue.[Int]create());
assignedQForTest = syncQueue;
}
assignedQForTest
}
}
但是我收到了这个错误:
预期的标识符,但' ['找到。
错误来源:。[Int]部分。
我有相同的Java代码,它完美无缺,没有任何错误:
import java.util.Queue;
import com.google.common.collect.MinMaxPriorityQueue;
import com.google.common.collect.Queues;
public class test {
public static void main(String[] args) {
Queue<Integer> queue = Queues.synchronizedQueue(MinMaxPriorityQueue.<Integer>create());
queue.add(15);
queue.add(63);
queue.add(20);
System.out.println (queue.poll());
System.out.println (queue.poll());
}
}
答案 0 :(得分:1)
类型参数应该在方法名称之后,如下所示。然后,由于Scala的Int
不是Comparable
,因此存在另一个编译错误。我将其更改为Integer
以解决此问题,但也许您会更喜欢以不同的方式解决该特定问题。
private var assignedQForTest : java.util.Queue[Integer] = null;
private var syncQueue : java.util.Queue[Integer] = null;
def create(DS_Type : String) : java.util.Queue[Integer] ={
DS_Type match{
case "syncQueue" =>
syncQueue = com.google.common.collect.Queues.synchronizedQueue(com.google.common.collect.MinMaxPriorityQueue.create[Integer]());
assignedQForTest = syncQueue;
}
assignedQForTest
}