我编写了一个代码,我将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的新手,如果有人指出我正确的方向来解决这个问题,我会很感激。
答案 0 :(得分:-1)
解决了.. Scala返回Option [Value]中的值而不是值本身。因此,选择权并没有被提升为字符串。
我更改了代码
var input1 = inputOutputMap.get("ip1").asInstanceOf[String];
到
var input1 = inputOutputMap("ip1").asInstanceOf[String];
就是这样。现在似乎微不足道。但是当一个人陷入困境似乎真的令人费解;))