有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    解决了。。 Scala返回选项[Value]中的值,而不是值本身。因此,选项并没有被转换成字符串

    我改了密码

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

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

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