如何从Scala类型获取java.lang.reflect.Type?

亨利·亨林森

说我有一个方法:

def foo(t: java.lang.reflect.Type) = ???

我想打电话给我(Int, Int)

这样的通话看起来如何?我试过了:

foo(typeOf[(Int, Int)])

但它似乎不起作用,因为它返回的是scala.reflect.runtime.universe.Type而不是java.lang.reflect.Type

塞尼亚

您应该使用classOf方法Predef(默认情况下已导入):

"".getClass
// Class[_ <: String] = class java.lang.String

classOf[String]
// Class[String] = class java.lang.String

请注意foo,即使您要调用javaaccepts的方法,也不应创建自己的方法java.lang.reflect.Type您可以使用ClassTag

import reflect.{ClassTag, classTag}

def javaFoo(t: java.lang.reflect.Type) = t.toString
def foo[T: ClassTag]() = javaFoo(classTag[T].runtimeClass)

foo[String]
// String = class java.lang.String

如您在呼叫侧所见,您不需要诸如classOf或的帮助器功能typeOf

类型擦除

作为@cmbaxter指出:由于类型擦除你不能得到TypeTuple2[Int, Int]-Type不包含有关类型参数的信息。您将获得TypeTuple2

classOf[(Int, Int)] == classOf[(String, String)]
// Boolean = true

classOf[(Int, Int)] == classOf[(_, _)]
// Boolean = true

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从Scala类型获取java.lang.reflect.Type?

来自分类Dev

Scala TypeTag到java.lang.reflect.Type

来自分类Dev

Scala TypeTag到java.lang.reflect.Type

来自分类Dev

获取java.lang.reflect.Type的简单代码

来自分类Dev

使用java.lang.reflect.Type检查实例

来自分类Dev

如何在泛型类中使用参数java.lang.reflect.Type分配分配类型

来自分类Dev

如何将java.lang.reflect.Type转换为枚举?

来自分类Dev

如何将java.lang.reflect.Type转换为枚举?

来自分类Dev

将java.lang.reflect.Type转换为Class <T> clazz

来自分类Dev

如何打开reflect.Type?

来自分类Dev

Android中的java.lang.reflect.invocationtargetException

来自分类Dev

java.lang.reflect.Array的性能

来自分类Dev

Roboelectric java.lang.RuntimeException:java.lang.reflect.InvocationTargetException

来自分类Dev

java.lang.NoClassDefFoundError:scala / reflect / api / TypeCreator

来自分类Dev

java.lang.ClassNotFoundException:scala.reflect.api.TypeCreator

来自分类常见问题

ByteBuddy中是否有任何方法可以将TypeDescription.Generic转换为适当的java.lang.reflect.Type?

来自分类Dev

ByteBuddy中是否有任何方法可以将TypeDescription.Generic转换为适当的java.lang.reflect.Type?

来自分类Dev

从TextField获取值时java.lang.reflect.InvocationTargetException-Javafx

来自分类Dev

获取 java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy

来自分类Dev

如何修复/解决java.lang.reflect.InvocationTargetException

来自分类Dev

如何在Maven中解决java.lang.reflect.InvocationTargetException

来自分类Dev

如何为 java.lang.reflect.Array.newInstance 传递泛型类型?

来自分类Dev

如何规范化scala.reflect.api.Types.Type

来自分类Dev

BigSheets-java.io.IOException:java.lang.reflect.UndeclaredThrowableException

来自分类Dev

为什么显示“ java.lang.reflect.InvocationTargetException”

来自分类Dev

了解java.lang.reflect.InvocationHandler的invoke方法的“代理”参数

来自分类Dev

显示错误原因:java.lang.reflect.InvocationTargetException

来自分类Dev

了解java.lang.reflect.InvocationHandler的invoke方法的“代理”参数

来自分类Dev

Javassist:将CtMethod转换为java.lang.reflect.Method

Related 相关文章

  1. 1

    如何从Scala类型获取java.lang.reflect.Type?

  2. 2

    Scala TypeTag到java.lang.reflect.Type

  3. 3

    Scala TypeTag到java.lang.reflect.Type

  4. 4

    获取java.lang.reflect.Type的简单代码

  5. 5

    使用java.lang.reflect.Type检查实例

  6. 6

    如何在泛型类中使用参数java.lang.reflect.Type分配分配类型

  7. 7

    如何将java.lang.reflect.Type转换为枚举?

  8. 8

    如何将java.lang.reflect.Type转换为枚举?

  9. 9

    将java.lang.reflect.Type转换为Class <T> clazz

  10. 10

    如何打开reflect.Type?

  11. 11

    Android中的java.lang.reflect.invocationtargetException

  12. 12

    java.lang.reflect.Array的性能

  13. 13

    Roboelectric java.lang.RuntimeException:java.lang.reflect.InvocationTargetException

  14. 14

    java.lang.NoClassDefFoundError:scala / reflect / api / TypeCreator

  15. 15

    java.lang.ClassNotFoundException:scala.reflect.api.TypeCreator

  16. 16

    ByteBuddy中是否有任何方法可以将TypeDescription.Generic转换为适当的java.lang.reflect.Type?

  17. 17

    ByteBuddy中是否有任何方法可以将TypeDescription.Generic转换为适当的java.lang.reflect.Type?

  18. 18

    从TextField获取值时java.lang.reflect.InvocationTargetException-Javafx

  19. 19

    获取 java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy

  20. 20

    如何修复/解决java.lang.reflect.InvocationTargetException

  21. 21

    如何在Maven中解决java.lang.reflect.InvocationTargetException

  22. 22

    如何为 java.lang.reflect.Array.newInstance 传递泛型类型?

  23. 23

    如何规范化scala.reflect.api.Types.Type

  24. 24

    BigSheets-java.io.IOException:java.lang.reflect.UndeclaredThrowableException

  25. 25

    为什么显示“ java.lang.reflect.InvocationTargetException”

  26. 26

    了解java.lang.reflect.InvocationHandler的invoke方法的“代理”参数

  27. 27

    显示错误原因:java.lang.reflect.InvocationTargetException

  28. 28

    了解java.lang.reflect.InvocationHandler的invoke方法的“代理”参数

  29. 29

    Javassist:将CtMethod转换为java.lang.reflect.Method

热门标签

归档