Scala中的Google Guava synchronizedQueue初始化错误

时间:2016-03-28 16:07:57

标签: scala guava

我正在尝试在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());
    }
}

1 个答案:

答案 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
  }