问题标签 [classtag]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Scala Any => 原生格式
我有一个 type 的地图Map[_, Any]
,我想以它们的本机格式提取值(不求助于.asInstanceOf[_]
)。
像这样的东西...
显然那是失败的。
我不喜欢这种方法,但我想我可以做这样的事情......但即使这样仍然出现Any
而不是Int
or String
。
然后我想也许是一些包装Map
...
但这仍然是Any
. 我只是不知道如何转换 Any => native。
所以我的问题是...
- 为什么会失败?
- 以原始格式获取值的更好方法是什么?最简单和/或没有外部依赖是理想的......但我真的对任何事情都持开放态度(尽管需要注意的是我现在仍在使用 scala 2.11)。
谢谢!
scala - Scala中的类标签
在 Scala 中,在类型擦除期间,泛型变量在泛型变量出现在类型位置的任何地方都被“对象”类型替换。
EG: val x T;
--> 被替换为val x Object;
因此,传递的确切类型的详细信息将在运行时变得不可用。
为了克服这个问题(在运行时获得确切的类型),提到 ClassTag 将帮助我们。
你能帮我ClassTag在运行时如何获取类型信息吗?
当提到 ClassTag 时,它也是用上下文绑定的泛型类型编写的。
例如:def method[T:ClassTag] {...}
所以我认为,这里提到的“T”也将被删除。但是 ClassTag 以某种方式保留了类型信息。我有点困惑这是如何工作的..(类似 TypeTag 和 WeakTag 也是如此)