java.lang.NoSuchMethodException:scala.collection.immutable。$ colon $ colon

塔伦·哈内贾(Tarun Khaneja):

我试图动态地使用一个变量作为String类型调用一个函数,即变量将包含一个函数名作为String。因此,我需要使用该变量来调用函数。

因此,我正在使用Scala反射。如果该函数接受数据类型为Sting,则可以正常工作,但是会引发错误List [Map [String,Double]]

我在下面的链接中引用了代码

是否有任何Scala功能允许您调用名称存储在字符串中的方法?

下面是一个我要测试的测试程序

package test

import scala.collection.immutable.Map

class DynamicaVariable {
 def cat(s1: List[Map[String, Double]]) = {
  println(s1)
 }
}

object DynamicaVariable{
 def main(args: Array[String]): Unit = {

 val obj = new DynamicaVariable
 val data = List(
  Map("a" -> 1.0, "b" -> 267.0, "c" -> 26.0, "d" -> 2.0), Map("a" -> 1.0, "b" -> 2678.0, "c" -> 40.0, "d" -> 2.0), Map("a" -> 4.0, "b" -> 267.0, "c" -> 26.0, "d" -> 2.0), Map("a" -> 1.0, "b" -> 2678.0, "c" -> 90.0, "d" -> 17.0)
)
 val functionName = "cat"
 val method = obj.getClass.getMethod(functionName,data.getClass)
 method.invoke(obj,data)
}
}

我的scala版本是2.11.6,我正在使用IntelliJ。我也检查了SDK版本。并取消选中Scala下的“在编译过程中运行工作表”

但是仍然没有运气!任何想法都会有所帮助。谢谢!

user10386912:

如此处所述,Java中的运行时类与Scala中的运行时类型

在Scala类上使用Java反射可能会返回令人惊讶或错误的结果

在您看来,由于数据的类型为scala.collection.immutable.List,因此您需要在运行时使用Scala反射来获取数据 val 的类型这是一个例子

import scala.reflect.ClassTag
import scala.reflect.classTag

class DynamicaVariable {
    def cat(s1: List[Map[String, Double]]) = {
        println(s1)
    }
}

object DynamicaVariable{
    def main(args: Array[String]): Unit = {
        val obj = new DynamicaVariable
        val data = List(Map("a" -> 1.0, "b" -> 267.0, "c" -> 26.0, "d" -> 2.0)
                        , Map("a" -> 1.0, "b" -> 2678.0, "c" -> 40.0, "d" -> 2.0)
                        , Map("a" -> 4.0, "b" -> 267.0, "c" -> 26.0, "d" -> 2.0)
                        , Map("a" -> 1.0, "b" -> 2678.0, "c" -> 90.0, "d" -> 17.0))
        val functionName = "cat"
        val method = obj.getClass.getMethod(functionName, getClassOf(data).runtimeClass)

        method.invoke(obj,data)
    }

    def getClassOf[T: ClassTag](obj: T) = classTag[T]
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Dev

Intellij IDEA java.lang.NoSuchMethodError:scala.collection.immutable。$ colon $ colon.hd $ 1()Ljava / lang / Object

来自分类Java

Spark Submit失败,并出现java.lang.NoSuchMethodError:scala.Predef $。$ conforms()Lscala / Predef $$ less $ colon $ less;

来自分类Dev

Apache Spark 2.1:java.lang.UnsupportedOperationException:找不到scala.collection.immutable.Set [String]的编码器

来自分类Java

从Java使用scala.collection.immutable.Set的示例

来自分类Dev

在我的java类中使用scala.collection.immutable.Map

来自分类Dev

NoSuchMethodError:scala.Predef $。$ conforms()Lscala / Predef $$ less $ colon $ less

来自分类Dev

Scala案例类中的init方法的java.lang.NoSuchMethodException

来自分类Java

从scala.collection.immutable.List转换为Java中的java.util.List

来自分类Java

如何从Java中的Java列表创建scala.collection.immutable.Seq?

来自分类Java

将java.util.Map [String,Object]转换为scala.collection.immutable.Map [String,Any]

来自分类Java

如何在Java代码中使用scala.collection.immutable.List

来自分类Dev

Kotlin:Double Colon与Lambda在相似级别

来自分类Dev

Sharpsign Colon和Gensym之间的区别

来自分类Dev

android java.lang.AssertionError:java.lang.NoSuchMethodException-Proguard

来自分类Dev

为什么JavaNGramExample失败并显示“ java.lang.ClassNotFoundException:scala.collection.GenTraversableOnce $ class”?

来自分类Dev

蜂巢错误:线程“主”中的异常java.lang.NoClassDefFoundError:scala / collection / Iterable

来自分类Dev

线程“主”中的异常java.lang.NoSuchMethodError:scala.Predef $ .refArrayOps([Ljava / lang / Object;)Lscala / collection / mutable / ArrayOps

来自分类Dev

Kotlin java.lang.NoSuchMethodException:<init>()

来自分类Java

java.lang.NoSuchMethodException为的onCreate

来自分类Java

Collection.toArray()java.lang.ClassCastException

来自分类Dev

Split/Delimit a string on the first space/colon using regex

来自分类Dev

R Colon v。中的函数内子集的参数大于或等于

来自分类Dev

Spark java.lang.ClassCastException:scala.collection.mutable.WrappedArray $ ofRef无法转换为java.util.ArrayList

来自分类Dev

在scala中,Map [_,_]和scala.collection.immutable.Map [_,_]如何具有不同的TypeTag?

来自分类Dev

(1至4).toSet和(1至4).to [scala.collection.immutable.Set]之间的Scala差异?

来自分类Java

Java反射错误Java.lang.NoSuchMethodException,但是方法存在

来自分类Dev

当条目较少时将json转换为“ scala.collection.immutable.HashMap”时发生ClassCastException

来自分类Dev

排序Seq [scala.collection.immutable.Map [String,org.joda.time.DateTime]]

来自分类Dev

不支持的文字类型类scala.collection.immutable.HashSet $ HashTrieSet

TOP 榜单

热门标签

归档