scala中反射的简单应用

    xiaoxiao2021-12-14  18

    以下是在scala里利用java api写的反射. 之后会更新scala自己的反射机制

    // A.scala, 存放被反射的类 package aaa class A{ def fun1(a:String) = print(a) def fun2() = print("fun2") val t = 1 } //B.scala,主程序入口 object B extends App { val classA = Class.forName("aaa.A") val method = classA.getDeclaredMethod("fun1", classOf[String]) method.invoke(classA.newInstance(), "5")// 如果是Int的话,要用new Integer(5) /* 如果类A如下定义: class A(a:String) 则需要在反射时候添加构造器 val cons = classA.getConstructors val newInst = cons(0).newInstance("你好") method.invoke(newInst, "哈哈") */ } // 也可以为需要反射的类创建一个基类 trait AA{ def fun1(a:String) } //类A继承AA class A extends AA{ //... } // 然后再B.scala中可以调用 newInst.asInstanceOf[AA].fun1("哈哈")
    转载请注明原文地址: https://ju.6miu.com/read-963949.html

    最新回复(0)