java类型转换在Scala中提供了类转换异常
我写了一段代码,在其中我将scala.collection.mutable.HashMap
中的值设置为java.lang.Object
我这样做是为了把各种类型作为值。当我在函数中设置这些值时,它们的类型是正确的。当我试图检索它们时,尽管我得到了一个classcast异常
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 楼答案
解决了。。 Scala返回选项[Value]中的值,而不是值本身。因此,选项并没有被转换成字符串
我改了密码
到
就这样。现在似乎微不足道。但当一个人陷入困境时,这似乎真的令人费解