Scala中调用java反射异常记录

本文详细解析了在Scala编程中遇到的Column实例化错误,该错误源于尝试实例化一个Java注解接口。文章提供了错误堆栈跟踪,并分享了正确的代码实现方式,即使用getAnnotationsByType替代。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Exception in thread "main" java.lang.InstantiationError: com.feng.Column
    at com.feng.SparkSteamingTwo$$anonfun$getInsertSql$2.apply(SparkSteamingTwo.scala:126)
    at com.feng.SparkSteamingTwo$$anonfun$getInsertSql$2.apply(SparkSteamingTwo.scala:124)
    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:733)
    at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
    at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)
    at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:732)
    at com.feng.SparkSteamingTwo$.getInsertSql(SparkSteamingTwo.scala:124)
    at com.feng.SparkSteamingTwo$.<init>(SparkSteamingTwo.scala:33)
    at com.feng.SparkSteamingTwo$.<clinit>(SparkSteamingTwo.scala)
    at com.feng.SparkSteamingTwo.main(SparkSteamingTwo.scala)

原因:因为Column是java中定义的一个Annotation的java 接口,而java接口是不能进行实例化的。最开始的代码

var cl=new Column()

val columns:Column[]=field.getAnnotationByType(cl.getClass)

修改代码:

field.getAnnotationsByType(classOf[Column])

发生此问题的原因在于自己对java代码转scala代码很多地方不了解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值