zoukankan      html  css  js  c++  java
  • [Scala] java使用scala的jar包问题:Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Short

    场景

    刚写的scala处理bmp文件的实验, 打了jar包让java调用一下, 结果发生这个错误.

    package org.tanglizi.bmp.demo;
    
    import org.tanglizi.bmp.image.BmpImage;
    import scala.Tuple3;
    
    public class Application {
    
        public static void main(String[] args) {
            BmpImage image = BmpImage.create(200, 100);
            image = image.fill(new Tuple3<>(127, 0, 100));
            image.save("example.bmp");
        }
    }
    
    
    Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Short
    	at scala.runtime.BoxesRunTime.unboxToShort(BoxesRunTime.java:96)
    	at org.tanglizi.bmp.image.BmpWriter$.$anonfun$toBytes$2(BmpWriter.scala:14)
    	at scala.collection.immutable.List.foreach(List.scala:312)
    	at org.tanglizi.bmp.image.BmpWriter$.$anonfun$toBytes$1(BmpWriter.scala:13)
    	at org.tanglizi.bmp.image.BmpWriter$.$anonfun$toBytes$1$adapted(BmpWriter.scala:12)
    	at scala.collection.immutable.List.foreach(List.scala:312)
    	at org.tanglizi.bmp.image.BmpWriter$.toBytes(BmpWriter.scala:12)
    	at org.tanglizi.bmp.image.BmpImage.save(BmpImage.scala:18)
    	at org.tanglizi.bmp.image.BmpImage.save(BmpImage.scala:14)
    	at org.tanglizi.bmp.demo.Application.main(Application.java:11)
    
    Process finished with exit code 1
    
    

    解决方法

    范型问题, Tuple3<>应该为Tuple3<Short, Short, Short>
    为了简化代码, 改为new Tuple3<>((short)127, ...)

  • 相关阅读:
    洛谷 2574 XOR的艺术
    洛谷 1774 最接近神的人
    洛谷 3398 仓鼠找sugar 【模板】判断树上两链有交
    洛谷 2440 木材加工
    洛谷 1824 进击的奶牛
    洛谷 1873 砍树
    洛谷 1577 切绳子
    51nod1485 字母排序
    51nod1055 最长等差数列
    51nod1128 正整数分组V2
  • 原文地址:https://www.cnblogs.com/tanglizi/p/12013171.html
Copyright © 2011-2022 走看看