Tag: 具体化

什么是泛化generics? 他们如何解决types擦除问题,为什么不能添加没有重大变化?

我读过Neal Gafter的博客,关于这个问题我还不清楚。 为什么不能创buildCollections API的实现来保存给定Java的当前状态,JVM和现有集合API的types信息? 在未来的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来获取types信息。 为什么要保留generics类信息需要更改语言,而不仅仅是JVM实现的变化? 我不了解什么?

在(function)编程的背景下,“具体化”和“具体化”是什么意思?

我在关于haskell和函数式编程的博客 (特别是在sigfpe的博客 )中阅读了很多关于这个术语的文章,但是我不知道它的含义。 我大部分时间都不知道,但是如果我知道的话,我可能会更好地理解这些文本。 谷歌没有帮助我。 我迷上了技术的东西。 而且,这个世界的非技术含义(“转向抽象的具体”)并不能帮助我理解它在代码中的实际意义。 我对计算机科学概念有点慢,所以用代码的实际例子会很好。 :P

为什么我应该关心Java没有具体化的generics?

这个问题是我最近在一次采访中问的一个问题,那就是候选人希望添加到Java语言中。 Java通常被认为是一种痛苦,没有具体化的generics,但是当被推送时候,候选人实际上并不能告诉我他能在那里获得什么。 很显然,因为原始types在Java中是允许的(和不安全的检查),所以可以颠覆generics,最终得到一个List<Integer> (例如)实际上包含了String 。 types信息具体化,这显然是不可能的; 但一定还有比这更多的 ! 人们可以列举他们真正想要做的事情的例子吗? 我的意思是,显然你可以在运行时得到一个List的types – 但是你会用它做什么? public <T> void foo(List<T> l) { if (l.getGenericType() == Integer.class) { //yeah baby! err, what now? 编辑 :一个快速更新,因为答案似乎主要是关心需要传递一个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?

Scala:什么是TypeTag,我如何使用它?

我所知道的TypeTags是他们以某种方式取代了Manifests。 互联网上的信息是稀缺的,并没有给我一个很好的主题意识。 所以如果有人在TypeTag上分享了一些有用的材料的链接,包括例子和stream行的用例,我会很高兴。 详细的答案和解释也是受欢迎的。