【Java自学-泛型 泛型转型】教程文章相关的互联网学习教程文章

java – 什么方法声明接受有界和无界多级泛型?【代码】

鉴于:public class Testcase {public static <E> List<List<E>> transform(List<List<E>> list) {return list;}public static <E> List<List<? extends E>> transform2(List<List<? extends E>> list) {return list;}public static void main(String[] args) {List<List<Integer>> known = new ArrayList<>();List<List<? extends Number>> unknown = new ArrayList<>();transform(known); // workstransform(unknown); // fa...

java – kotlin错误的可空性推论没有任何泛型【代码】

在春天mvc(5.1.3)我试图做:val url : String? = null val matcher: ResultMatcher = MockMvcResultMatchers.forwardedUrl(url)我得到第二行的编译错误. 来自intellij(kotlinc-jvm 1.3.11):Error:(230, 56) Kotlin: Null can not be a value of a non-null type String或者从gradle(kotlin 1.2.71):Type mismatch: inferred type is String? but String was expectedspring方法的java源代码是:/*** Asserts the request was for...

Java泛型好奇心【代码】

我有一个接口A,B类实现. 以下通用方法有效public static <T, U extends T> List<T> listFactory(Collection<U> source) {return new ArrayList<T>(source); }但public static <T> List<T> listFactory(Collection<? extends T> source) {return new ArrayList<T>(source); }当我将输出定向到时,不会(编译错误,类型不匹配)List<A> tester = listFactory(B.defaultCollectionFactory(3));defaultCollectionFactory(int count)静态提供...

Java泛型编译错误 – 类型中的方法方法(Class)不适用于参数【代码】

上周四有人在工作时向我展示了一个编译错误,我无法以干净的方式修复它,从那以后它一直困扰着我. 问题是泛型相关,我重新构建了生成编译错误的简化版本的代码.错误发生在下面显示的最后一行代码中. 我一直在寻找各种各样的互联网,但似乎找不到一个合适的解释为什么Java编译器不接受代码.我想如果它允许代码,那么可能会在Bar.operationOnBar()中创建一个类转换问题,但我不知道如何. 有人可以请教我为什么不编译?public interface Int...

java – 泛型工厂方法约定【代码】

让我说有一个抽象类看起来像abstract class Parent<V> {protected static <T extends Parent<V>, V> T newInstance(final Class<T> type, final V value) {// ...} }在以下Child类中class Child extends Parent<XXX> {public static Child newInstance1(final XXX value) {// ...}public static Parent<XXX> newInstance2(final XXX value) {// ...} }哪个更好? newInstance1还是newInstancw2?解决方法:它实际上取决于您使用newI...

java – 转换为泛型类的通用子类型【代码】

假设我有这个:class Base<T> {}class Derived<T> extends Base<T> {}然后在我的代码中,我可以安全地投射而没有像这样的警告:public <T> void foo(Base<T> base) {Derived<T> f = (Derived<T>) base; // fine, no warning }这很好.但是如果派生类有更多的类型参数,它就不再起作用了:class Base<T> {}class Derived<T, U> extends Base<T> {}public <T> void foo(Base<T> base) {Derived<T, ?> f = (Derived<T, ?>) base; // unch...

Java泛型和Serializable【代码】

我们创建了一个抽象类,用于处理Redis(set / get values),如下所示:public abstract class AbstractCachedSupport<T extends Serializable> {protected T get(CacheKey key, Supplier<T> supplier) {...}// ... }我不高兴的是,在扩展这个类时我们不能使用List,Map等接口:public class CachedMap extends AbstractCachedSupport<Map<String, Integer>>因为它们不扩展Serializable,所以我们必须始终使用具体的类:public class Cach...

如何使用通配符在Java中复制泛型集合【代码】

考虑这个java类:import java.util.Collection; import java.util.Iterator; import java.util.LinkedList;public class NumberSet {private Collection<? extends Number> numbers;public NumberSet(Collection<? extends Number> numbers) {this.numbers = numbers;}public NumberSet(NumberSet other) {//copy other.numbers to this.numbersnumbers = new LinkedList<>();for (Iterator<? extends Number> it = other.numbers....

Java如何使用Set参数化泛型方法?【代码】

我有一个这样的签名方法:private <T> Map<String, byte[]> m(Map<String, T> data, Class<T> type)当我这样调用时,它工作正常:Map<String, String> abc= null; m(abc, String.class);但是当我的参数T是一个Set时它不起作用:Map<String, Set<String>> abc= null; m(abc, Set.class);有没有办法让它发挥作用?解决方法:你将不得不做一些非常难看的事情,使用这样的未经检查的演员:m(abc, (Class<Set<String>>) (Class<?>) Set.cla...

如何在Java中使用泛型语言运算符和扩展Number的泛型类【代码】

我想对两个扩展Number的相同类型的泛型参数执行操作. 可能吗?我总是习惯在泛型参数上调用方法,但似乎使用运算符存在一些问题(对于参数类型T,T,运算符未定义).public static <T extends Number> T sum(T a, T b){return a+ b; }我究竟做错了什么? 编辑:我试着改善一点我的问题.我知道操作符没有为Number类型定义.这件事有点让人伤心,因为在不引入@Victor Sorokin建议的新界面的情况下执行这样的操作会很好. 但是我仍然不明白一件...

java map在JSTL EL中的小应用--<c:forEach>遍历Map<>泛型【代码】【图】

准 备 数 据 :(自己准备吧少年,考验你时候到了!!) 1 /** 结构示意图:2   类型: List集合    map对象    LIst集合   Person类对象 String name ; int age3 4 5     mList -> map() ->pList     ->Person p1 坤哥 246          ->Person p2 鲲哥 1047         ->pList28       ...

Java泛型 – 类<?>构造函数参数问题【代码】

我已经使用Java很长一段时间了,但有些事情对我来说仍然不太清楚,特别是涉及到泛型…… 事情就是这样:我有这个我正在使用的Search类(see here for details),它构造如下:public Search(Class<?> searchClass) {...}此外,我有一个参数化的通用包装器,如下所示:public class HibernateSearch<E> extends Search implements Serializable {public HibernateSearch(Class<E> entityClass) {super(entityClass);}// ... omitted for br...

Java泛型Enum子类型接口【代码】

鉴于以下设置:public class TestType {public static void main(String[] args) {List<Constants> list = new ArrayList<>();accept(list); //Does not compile}static void accept(Iterable<MyInterface> values) {for (MyInterface value : values) {value.doStuff();}} }interface MyInterface<T> {T doStuff(); }enum Constants implements MyInterface<Integer> {ONE, TWO, THREE;@Overridepublic Integer doStuff() {return...

java – JSON泛型集合反序列化【代码】

我用Java编写了这样的DTO类:public class AnswersDto {private String uuid;private Set<AnswerDto> answers; }public class AnswerDto<T> {private String uuid;private AnswerType type;private T value; }class LocationAnswerDto extends AnswerDto<Location> { }class JobTitleAnswerDto extends AnswerDto<JobTitle> { }public enum AnswerType {LOCATION,JOB_TITLE, }class Location {String text;String placeId; }class ...

具有泛型类型边界的Java Builder模式【代码】

我正在尝试使用Builder模式而不是telescoping构造函数创建一个包含许多参数的类.我是按照Joshua Bloch的Effective Java描述的方式做的,在封闭类上有私有构造函数,还有一个公共静态Builder类. Builder类在调用build()之前确保对象处于一致状态,此时它将封闭对象的构造委托给私有构造函数.从而public class Foo {// Many variablesprivate Foo(Builder b) {// Use all of b's variables to initialize self}public static final clas...