Questions tagged «reification»

1
Scala:什么是TypeTag?如何使用?
我对TypeTag的了解仅是它们以某种方式取代了Manifests。互联网上的信息稀缺,无法使我对这个主题有很好的了解。 因此,如果有人共享指向TypeTag上一些有用材料的链接(包括示例和流行的用例),我将感到非常高兴。也欢迎提供详细的答案和解释。

4
什么是具体化?
我知道Java会擦除地实现参数多态性(泛型)。我了解什么是擦除。 我知道C#通过实现实现了参数多态。我知道那可以让你写 public void dosomething(List<String> input) {} public void dosomething(List<Int> input) {} 或者您可以在运行时知道某些参数化类型的类型参数是什么,但是我不知道它是什么。 什么是改良型? 什么是固定值? 对类型/值进行整形后会发生什么?
163 c#  generics  reification 

13
我为什么要关心Java没有泛型泛型?
这是我最近在一次采访中提出的一个问题,候选人希望将其添加到Java语言中。人们通常认为Java没有通用化泛滥的痛苦,但是当Java 泛化后,候选人实际上并不能告诉我他在那里可以实现的目标。 显然,由于Java中允许使用原始类型(以及不安全的检查),因此有可能破坏泛型并以List<Integer>实际包含Strings的a结尾。如果类型信息得到证实,这显然变得不可能。但是肯定不止于此! 人们可以发布他们真正想做的事的示例吗?我的意思是,显然您可以List在运行时获取a的类型-但是您将如何处理? public <T> void foo(List<T> l) { if (l.getGenericType() == Integer.class) { //yeah baby! err, what now? 编辑:对此的快速更新,因为答案似乎主要是担心需要将a Class作为参数传递(例如EnumSet.noneOf(TimeUnit.class))。我一直在寻找一些不可能做到的东西。例如: List<?> l1 = api.gimmeAList(); List<?> l2 = api.gimmeAnotherList(); if (l1.getGenericType().isAssignableFrom(l2.getGenericType())) { l1.addAll(l2); //why on earth would I be doing this anyway?

6
在(函数式)编程的上下文中,“确定”和“确定”是什么意思?
我在关于haskell和函数式编程的博客中读了很多(特别是在sigfpe的博客中),但是我对它的含义一无所知。我大多数时候都不了解它,但是如果我知道的话,我可能会更好地理解这些文本。Google帮不了我。我迷失在技术方面。 同样,世界的非技术含义(“使抽象具体化”)也无法帮助我理解在代码中统一某些东西的实际含义。 我对计算机科学的概念有点慢,所以带有代码的实际示例将是不错的选择。:P

4
什么是泛型泛型?它们如何解决“类型擦除”问题?为什么不进行重大更改就不能添加它们?
我已经阅读了尼尔·古夫特(Neal Gafter)关于该主题的博客,但在很多方面仍不清楚。 为什么在给定Java,JVM和现有collection API当前状态的情况下,无法创建Collections API的实现来保留类型信息?这些难道不能以保留向后兼容性的方式替换Java未来版本中的现有实现吗? 举个例子: List<T> list = REIList<T>(T.Class); REIList是这样的: public REIList<T>() implements List { private Object o; private Class klass; public REIList(Object o) { this.o = o; klass = o.getClass(); } ... the rest of the list implementation ... 并且这些方法使用Object o和Class klass来获取类型信息。 为什么保留通用类信息需要更改语言而不仅仅是JVM实现更改? 我不明白什么?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.