Tag: generics

在Java中什么是符号

可能重复: Map 在Java中意味着什么? Java Generics – 这个语法是什么? 我想知道Java中的符号是做什么的。 public static class Map extends MapReduceBase implements Mapper 我不是任何时尚的Java专家。 我希望你能为使用符号的原因提供一些明确的答案。

为什么有些语言需要拳击和拆箱?

这不是什么是装箱和拆箱的问题,而是为什么像Java和C#这样的语言需要呢? 我非常熟悉C ++,STL和Boost。 在C ++中,我可以很容易地写出这样的东西, std::vector dummy; 我有一些Java经验,但我真的很惊讶,因为我必须写这样的东西, ArrayList dummy = new ArrayList(); 我的问题,为什么它应该是一个对象,在谈论generics时,在技术上如此难以包含原始类型?

guice的TypeLiteral如何工作?

Guice的TypeLiteral如何克服Javagenerics类型擦除过程? 它创造了奇迹,但这是如何实现的?

带有generics返回类型的方法中的Java编译错误

我无法解释为什么这个简单的代码不能编译。 class Foo { T method() { return this; } } 错误是: Type mismatch: cannot convert from Foo to T 为什么不? T被定义为Foo或其子类。 在相关的说明中,等效的Scala示例会进行编译,因此Java错误不是由于JVM的限制。 class Foo { def method[T <: Foo] = this } 更新:我在Java Tutorials中找到了关于generics方法的简明建议。 通用方法允许使用类型参数来表示方法和/或其返回类型的一个或多个参数的类型之间的依赖关系。 如果没有这种依赖关系,则不应使用通用方法。 我的解释是,通用方法仅适用于两种情况。 两个(或更多)方法的参数类型之间存在依赖关系。 方法的返回类型与其参数类型中的一个(或多个)之间存在依赖关系。 显然,有问题的简单代码在其参数和返回类型之间没有依赖关系,因为没有参数。 因此,通用方法是不合适的。 更新2:现在我已经意识到这一点,我在开源项目中注意到这种反模式的例子。 co.cask.cdap.api.data.DatasetContext.getDataset() org.kitesdk.data.Datasets.load() com.fasterxml.jackson.databind.ObjectMapper.valueToTree() 更新3:我想我已经找到了一个不涉及多个参数或返回类型的generics方法的要求。 多重inheritance似乎是Java教程中上述规则的一个例外。 void method(T foobar) { // Call Foo […]

带有generics的地图数组问题

可能重复: Javagenerics和数组初始化 如何在Java中实例化一组地图? 我知道我能做到: Map map = new HashMap(); 所以我应该能够: Map[] maps = new HashMap[10]; 但这不起作用,给出编译问题。

Java Generics – 如何使用后继对象调用通用映射

我写了以下方法 validate(Map map) 我想打电话给它 dogMap = new HashMap; … validate(dogMap) 狗是动物的inheritance者, 但它没有编译。 如何更改它以便我可以使用后继对象调用它? 谢谢。

Stack类型不是通用的; 它不能使用参数进行参数化

我正在尝试编写一个简单的程序来使用stacks.It给了我错误 Stack类型不是通用的; 它不能用参数参数化 import java.util.*; public class Stack { public static void main(String[] args) { Stack stack = new Stack (); s.push(“Hello”); System.out.println(s); } }

如何从int转换为generics类型Integer?

我对Java比较陌生,习惯于在C#中使用generics,所以我对这段代码有点挣扎。 基本上我想要一个通过键获取存储的Android首选项的通用方法,这个代码虽然很丑,但是当它被ClassCastException爆炸时,它适用于布尔但不适用于整数。 任何人都可以告诉我为什么这是错误的,也许可以帮助我改善整个例程(使用通配符?)? public static T getPreference(Class argType, String prefKey, T defaultValue, SharedPreferences sharedPreferences) { … try { if (argType == Boolean.class) { Boolean def = (Boolean) defaultValue; return argType.cast(sharedPreferences.getBoolean(prefKey, def)); } else if (argType == Integer.class) { Integer def = (Integer) defaultValue; return argType.cast(new Integer(sharedPreferences.getInt(prefKey, def))); } else { AppGlobal.logWarning(“getPreference: Unknown type ‘%s’ for […]

在HADOOP地图中使用generics可以减少问题

我的问题似乎对HADOOP用户来说很愚蠢。 但是我很少混淆Generics在地图缩小问题中的使用,比如“WORD COUNT”。 我知道generics用于类型铸造和类型安全的bascialy。 但我不能把这个概念联系起来。 在字数统计问题上, public class WordCountMapper extends Mapper { @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { // TODO Auto-generated method stub … } } } 请允许任何人清除我在这里使用generics 。 如果我在提出这个问题时犯了任何错误,请纠正我。 我现在理解这里使用的generics是键值对(KEY IN,VALUE IN,KEY OUT,VALUE OUT)。 但我仍然不清楚,为什么generics在这里用于键值对。 没有其他方法可以做同样的事情。 在这里使用Generics有什么好处? 谢谢!

Javagenerics2方法声明中的或集

我已经看到以下方法声明,但我不明白如何使用和 。 public 在这种方法中做了什么? public void add(K k, V v) static 在这个方法中做了什么? public static int countGreaterThan(T[] anArray, T elem)