类型转换在Scala中提供ClassCast异常

时间:2016-06-28 05:55:43

标签: java scala

我编写了一个代码,我将scala.collection.mutable.HashMap中的值设置为java.lang.Object

我这样做是因为我可以将各种类型作为值。当我在函数中设置它们时,这些值是正确的类型。当我尝试检索它们虽然我得到了一个转发异常

java.lang.ClassCastException: scala.Some cannot be cast to java.lang.String

以下是相关代码的部分内容

     def readInputTexts() : HashMap[String,Object] =
  {
    var ioStrings : HashMap[String,Object] = new HashMap[String,Object]();
    val bw = new BufferedWriter(new FileWriter(fileOp));
    val bwIp1 = new BufferedReader(new FileReader(fileIp1));
    val bwIp2 = new BufferedReader(new FileReader(fileIp2));
    val iterator1 = Iterator.continually(bwIp1.readLine()).takeWhile(_ != null)
    var input1 : String = "";
    var similarityCount: Integer = 0;

    for(str1 <- iterator1)
    {
      input1 += (str1);
    }
        ioStrings.put("ip1", input1) ;

    val iterator2 = Iterator.continually(bwIp2.readLine()).takeWhile(_ != null)
    var input2 : String = "";
    for(str2 <- iterator2)
    {
      input2 += (str2);
    }
   ioStrings.put("ip2", input2) ;


     ioStrings.put("op", bw) ;
       bwIp1.close();
       bwIp2.close();   
       ioStrings;   
      }

以下是检索值的代码

var inputOutputMap : HashMap[String, Object] = new HashMap[String, Object]();
inputOutputMap = inputOutput.readInputTexts();
val bw = inputOutputMap.get("op");
var input1 = inputOutputMap.get("ip1").asInstanceOf[String];
var similarityCount: Integer = 0;
var input2  = inputOutputMap.get("ip2").asInstanceOf[String];

我是scala的新手,如果有人指出我正确的方向来解决这个问题,我会很感激。

1 个答案:

答案 0 :(得分:-1)

解决了.. Scala返回Option [Value]中的值而不是值本身。因此,选择权并没有被提升为字符串。

我更改了代码

var input1 = inputOutputMap.get("ip1").asInstanceOf[String];

var input1 = inputOutputMap("ip1").asInstanceOf[String];

就是这样。现在似乎微不足道。但是当一个人陷入困境似乎真的令人费解;))