草庐IT

Generics

全部标签

Java 泛型、单例和静态方法

所以我有一些“管理器”类,例如GroupManager。所有这些经理都是单例。使用此方法进行实例化:privatestaticGroupManagergroupManager=null;privateGroupManager(){}publicstaticGroupManagerInstance(){if(groupManager==null){groupManager=newGroupManager();}returngroupManager;}我想我应该开始使用一些继承,因为它们有很多复制的方法。每个Manager的Instance()方法都是相同的。所以对于继承我可以这样做(显然

java - 用 Arrays.asList() 装箱

在下面的例子中:classZiggyTest2{publicstaticvoidmain(String[]args){int[]a={1,2,3,4,7};Listli2=newArrayList();li2=Arrays.asList(a);}}编译器提示int[]和java.lang.Integer不兼容。即found:java.util.Listrequired:java.util.Listli2=Arrays.asList(a);^如果我更改List定义以删除通用类型,它工作正常。Listli2=newArrayList();编译器不应该将整数自动装箱为整数吗?我如何创建Lis

java - Sun CodeModel 泛型方法

有谁知道如何使用CodeModel生成以下泛型方法声明?publicTgetValue(Classclazz){...}用法:ValueTypevalue=getValue(ValueType.class);现有的实现似乎无法处理。我知道我可以按如下方式处理代码,但它需要转换:publicObjectgetValue(Classclass){...}用法:ValueTypevalue=(ValueType)getValue(ValueType.class);显然,由于类型转换的原因,这有点乱。 最佳答案 使用Object返回类型创建

java - 泛型问题 - 推断类型不符合声明的边界

我们目前有一个类无法使用openjdk6进行编译。以下缩短的类重现了此错误:publicclassCopyimplementsICopy{public,CextendsMap>Amethod(Aa,Bb){Asomething=null;returnsomething;}@Overridepublic>Amethod2(Aa,Bb){returnmethod(a,b);}}界面很简单,它只是表明,我们无法更改method2的签名:publicinterfaceICopy{public>Amethod2(Aa,Bb);}它使用oraclesjava版本和openjdk7编译-但使用ope

Java泛型传递参数

希望有人能帮我解决这个困惑。我做了这个方法:publicstaticvoidmyMethod(Map,MyInterface>map){}使用参数T以确保用作键的类与用作MyInterface中的参数的类相同。现在我想传递一个映射,其中不同的类作为键,当然还有MyInterface的相应实现。但它不起作用,因为类型参数导致语法错误。这是代码,我希望它是不言自明的。importjava.util.HashMap;importjava.util.Map;publicclassTest{publicstaticvoidmain(String[]args){Map,MyInterface>ma

Java 泛型 : creating collections of class objects extending Throwable

为什么第一行可以,第二行不行?Collection>exs=newArrayList>(){{add(MyOwnException.class);}};Collection>exs=Arrays.asList(MyOwnException.class); 最佳答案 错误的原因是java推断出错误的类型,但您可以通过在调用类型化方法时指定类型来使其编译,无需强制转换Arrays.asList():Collection>exs=Arrays.>asList(Exception.class);//compiles在不指定类型的情况下,ja

java - Java 中的递归泛型定义和 Stackoverflow

我正在为某个研究项目编写确定性有限自动机的实现,并且有一些弧导致相同的状态。我为State写了这个类,但是我想知道为什么代码会产生Stackoverflow:publicclassStateextendsHashMap>{publicstaticvoidmain(String[]args){Statet=newState();t.addTransition('a',t);t.addTransition('b',t);}publicvoidaddTransition(Charactersymbol,Statet){if(!this.containsKey(symbol)){this.pu

java - 如何在Eclipse中使用 "Infer Generic Type Arguments..."

每当eclipse中的源代码中缺少泛型时,它都会提示我“推断泛型类型参数...”问题是我认为“推断通用类型参数...”实际上并没有推断出任何东西。它通常不会提出任何建议。适用于哪些场景?它是如何工作的?在一些情况下可以“推断”出某些东西-eclipse仍然是空白。 最佳答案 这是一个示例,展示了如何在eclipse中使用“推断通用类型参数”:首先声明一个泛型类//GenericFoo.javapublicclassGenericFoo{privateTfoo;publicvoidsetFoo(Tfoo){this.foo=foo;}

java - 具有上限的通配符类型变量的迭代器

大家好,我尝试扩展HashMap执行“全小写”规则publicclassHttpQueryMapextendsHashMap{...@OverridepublicvoidputAll(Mapm){...Iterator>iterator=m.entrySet().iterator();...}...}编译时出错incompatibletypesrequired:Iterator>found:Iterator>whereCAP#1,CAP#2arefreshtype-variables:CAP#1extendsStringfromcaptureof?extendsStringCAP#2e

Java 泛型类的方法不适用于传递的参数

我有一个关于Java泛型的“奇怪”问题。首先我列出我的代码:服务类packagejse.generics.service;publicinterfaceService{}ServiceProvider.classpackagejse.generics.service;publicinterfaceServiceProvider{publicTgetService();}ServiceProviderRegistry.classpackagejse.generics.service;importjava.util.HashMap;importjava.util.Map;publiccla