【Java中忽略了泛型】教程文章相关的互联网学习教程文章

java 反射操作泛型【代码】

public class emm {public void test01(Map<String,User>map,List<User>list) {System.out.println("test01"); }public Map<String,User> test02() {System.out.println("test02");return null; }public static void main(String[] args) {try {Method m=emm.class.getMethod("test01", Map.class,List.class); //反射方法Type[] t=m.getGenericParameterTypes(); //获得带泛型的参数类型,返回的是type类型的数组for(Type paramTy...

JAVA之泛型类与List的使用【图】

泛型泛型类的诞生:增加编译期间的类型检查,取消类型转换的应用泛型类的分类: 1) 泛型类:尖括号<>是泛型的标志 2) E是类型变量(Type variable)变量名一般要大写 3) E在定义时是形参,代表的意思是MyArrayList最终传入的类型,但现在还不知道 注意:泛型类可以一次有多个类型变量,用逗号分割泛型是作用在编译期间的一种机制,即运行期间没有泛型的概念泛型类的使用 //定义了一个元素是Book引用的MyArrayList MyArrayList b...

无法使用通配符泛型类型为Java集合添加值【代码】

为什么这段代码不能编译(Parent是一个接口)?List<? extends Parent> list = ... Parent p = factory.get(); // returns concrete implementation list.set(0, p); // fails here: set(int, ? extends Parent) cannot be applied to (int, Parent)解决方法:为了安全起见,这样做.想象一下,如果它有效:List<Child> childList = new ArrayList<Child>(); childList.add(new Child());List<? extends Parent> parentList = childL...

java – 泛型行为在JDK 8和9中有所不同【代码】

以下简单类(repo重现它):import static org.hamcrest.*; import static org.junit.Assert.assertThat; import java.util.*; import org.junit.Test;public class TestGenerics {@Testpublic void thisShouldCompile() {List<String> myList = Arrays.asList("a", "b", "c");assertThat("List doesn't contain unexpected elements", myList, not(anyOf(hasItem("d"), hasItem("e"), hasItem("f"))));} }行为取决于JDK版本: >在JD...

Java-访问对象的父对象,涉及泛型?【代码】

使用下面的代码,我得到一个编译错误“不兼容的类型 – 找到树< T>但预期树< T>”.知道我对仿制药做错了什么吗?有没有其他方法来访问ParentObjectClass.this以外的对象的父对象?我知道“变通办法”,比如向Node类添加一个指向其父对象的变量.此外,我可以传递myInt作为构造函数参数,但我想找到一个更好的解决方案.谢谢你的任何建议. 我在这个网站上遇到了一个类似的问题,但是我尝试了我的代码而无法让它工作:Access “this” from ...

java – 努力想出具有接口和泛型集的API【代码】

我很难想出一个简单的API due to generics not being covariant 这是我的新问题:我无法获得Set<>这就是我需要的.我曾尝试阅读各种指南,但他们都使用了许多流行语,让我迷失方向. 考虑以下类public class Parent {} public class Child extends Parent {} interface Store {public Set<Parent> getParents(); //PROBLEM!! This needs to change }至少,我需要这些操作才能运作Set<Parent> parents = store.getParents(); parents.add...

如何将这种鸭子类型(Python)翻译成Java泛型?【代码】

通过示例考虑以下简单的Python函数:def quantize(data, nlevels, quantizer=lambda x, d: int(floor(x/d))):llim = min(data)delta = (max(data) - llim)/(nlevels - 1) # last level x == max(data) onlyy = type(data)if delta == 0:return y([0] * len(data))else:return y([quantizer(x - llim, delta) for x in data])在这里,它正在行动:>>> from random import random >>> data = [10*random() for _ in range(10)] >>> da...

java – Gson:解析泛型集合【代码】

是否可以创建一个从jsson解析泛型集合的方法?我上面的aproach不起作用,因为在运行时gson在这里返回LinkedHasmaps的ArrayList,但是在编译时没有错误.private <T> ArrayList<T> readArray(String json) {Gson gson = new Gson();Type collType = new TypeToken<ArrayList<T>>() {}.getType();return gson.fromJson(json, collType); }我已经在这里看过一些类似的问题:Using a generic type with Gson,但我找不到解决方案,这确实有效...

java – Play 2.0中带有泛型的自定义格式化程序

我想register一个自定义格式化程序来处理Set< Integer>. 显而易见的方式: Formatters.register(Set< Integer> .class,new AnnotationIntegerSetFormatter()); 导致“非法开始表达”.什么是正确的方法,或者不可能?解决方法:Set< Integer> .class不是合法的Java,因为该类型的通用组件在编译时被擦除.我认为使用Set.class应该可以工作,虽然这会为所有Set< T>注册你的处理程序.类型.

java – 如何将方法重构为只接受类型子集的泛型方法?【代码】

在成功编写了一个完成它应该做的事情的方法之后(下面简要缩短了示例)我想重构它不限于返回一个MyEntity列表而是一个List< SomeType扩展MyParentEntity>.因此,它应该只能接受扩展MyParentEntity但能够指定其他类型的那些类型(List< MyOtherEntity>,List< MyAwesomeEntity>等). 缩短的例子:public static List<MyEntity> getFavList(Context context) {String prefKey = buildKey( new MyEntity() );List<MyEntity> entityList = ne...

在循环Java 7中转换泛型类型【代码】

我有两种不同类型的需要迭代的集合,并且需要对集合中对象的一个??值求和.我怎么能用泛型来做这个,即没有为每种类型的Set写两种求和方法?private Double calculateFooScoreSum(final Set<Foo> fooScoreSet) {Double sum = 0.0;for (final Foo score : fooScoreSet){sum += score.getScore();}return sum; }private Double calculateBarScoreSum(final Set<Bar> barScoreSet) {Double sum = 0.0;for (final Bar score : barScoreSet...

java – 带集合的泛型【代码】

问题1:鉴于:List<Object> lo = new ArrayList<Object>();如果我理解正确,ArrayList<>()中的参数必须是Object,那么我们需要编写它吗?或者我们只是跳过它:List<Object> lo = new ArrayList<>(); 问题2:鉴于:List<? extends Animal> myArray = new ArrayList<Dog>(); 据我所知,=的左侧表示myArray是List类型的引用,可以是List< Cat>或列表< Dog>,…. = =右侧怎么样?这是什么意思?这是否意味着将引用myArray分配给List中仅包...

regex java:如何在泛型的开始标记和结束标记之间替换泛型中的字符串【代码】

在java中,我有一个像这样的字符串:"bla bla bla bla [BACK] bla bla bla [bla bla [GO] bla bla bla bla [bla" 我想找到一个规则用正则表达式替换开始标记“[”和“(开始)”和结束标记“]”用“(结束)”. 应忽略“单独的起始标签或结束标签”. 结果是我得到以下内容:bla bla bla bla (start)BACK(end) bla bla bla [ bla bla (start)GO(end) bla bla bla bla [bla解决方法: String resultString = subjectString.replaceAll("(?x...

迭代java中的泛型hashmap【代码】

我在我的抽象类中绘制了这个hashmap,我的意图是用每个延伸绘制的类的每个实例填充它.我像这样初始化地图:public static HashMap<Integer, ? extends Drawn> drawns = new HashMap();我试图像这样添加元素到哈希表://this code is in the abstract class Drawn() public void init(){idCount++;setID(idCount);drawns.put(idCount,this); }然后我尝试迭代这样:for(<Integer, ? extends Drawn> E : Drawn.drawns.values()) {E.dra...

对于具有泛型集合的循环,无法在Java 7中进行编译【代码】

也许有人可以解释下面的行为.我知道从Java 6到7有一些通用的类型处理更改,但我找不到解释这个. 这个库正在发生这种情况:<dependency><groupId>org.apache.felix</groupId><artifactId>org.apache.felix.framework</artifactId><version>3.2.2</version> </dependency>以下演示代码:import org.apache.felix.framework.util.manifestparser.ManifestParser;ManifestParser manifestParser = new ManifestParser(null, null, null,...