加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

动态在scala中创建案例类的新实例

发布时间:2020-12-16 18:49:46 所属栏目:安全 来源:网络整理
导读:给定对case类伴随对象t的引用和参数seq的序列如何调用case类的新实例? 当我自己键入参数的数量时,我可以创建一个类. scala case class B(n:String,a:Int,b:Int)defined class Bscala val t:AnyRef = Bt: AnyRef = Bscala val m = t.getClass.getMethods.fil
给定对case类伴随对象t的引用和参数seq的序列如何调用case类的新实例?

当我自己键入参数的数量时,我可以创建一个类.

scala> case class B(n:String,a:Int,b:Int)
defined class B

scala> val t:AnyRef = B
t: AnyRef = B

scala> val m = t.getClass.getMethods.filter{m => m.getName == "apply"}.
    filterNot {_.getReturnType.getName == "java.lang.Object"}(0)
m: java.lang.reflect.Method = public B B$.apply(java.lang.String,int,int)

scala> m.invoke(t,"name",1:java.lang.Integer,2:java.lang.Integer)
res99: Object = B(name,1,2)

我无法解决的问题是使用一系列参数调用invoke,如Seq(“name”,1:java.lang.Integer,2:java.lang.Integer).任何帮助如何做到这一点非常感谢.

我使用scala 2.10.0.

解决方法

只是自己找到它(分别在这里看到它 https://stackoverflow.com/a/2060503/55070).它的

method.invoke(t,seq: _*)

有时候把它写下来确实很有帮助;-)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读