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

为什么java在将字符串的arraylist对象传递给泛型方法时推断序列化【代码】

>静态< T> T pick(T a1,T a2){return a2; }> Serializable s = pick(“d”,new ArrayList< String>()); 如果我正在引用String或任何其他类型.编译器抛出错误. 你能帮我理解为什么java推断它为Serializable?解决方法:>作为参数a1,你传递的是String类型的“d”.>作为参数a2,您传递的是ArrayList< String>类型的新ArrayList< String>() 最接近的String和ArrayList的常见超类型是Serializable.如果你写了它也会工作:Object s = pick(...

java – 泛型和集合 – 类型未定义的方法【代码】

我正在研究一个项目,我对它的某个方面略有不满.我需要创建一个可以操作其他类实例集合的类.作为其中的一部分,它为每个实例创建一个包装器对象,它必须不仅能够保存实例,还能对其执行某些操作(包括equals / hashcode). 因此构造函数不仅包含包装对象,还包含调用程序告诉我们可以按照所需方式执行这些操作的函数对象(这可能与包含对象的本机行为不同). 顺便说一下,我知道我在这里描述的内容听起来像是在重新构建Collections框架的一部...

java – 泛型不适用于返回类型【代码】

为什么java不允许以下泛型返回类型:public <T extends Enum<T> & MyInterface> Class<T> getEnum() {return MyEnum.class; }虽然以下工作正常:public <T extends Enum<T> & MyInterface> Class<T> getEnum(Class<T> t) {return t; }getEnum(MyEnum.class); MyEnum是一个实现MyInterface接口的动画. 为什么我不允许返回MyEnum.class? 编辑: 我需要这个,因为函数getEnum()在一个接口中.它可以定义如下:@Override public Class<M...

java – 使用泛型链接任务【代码】

我正在尝试为链接任务创建一个API. 首先,我设计了一个定义任务的非常简单的界面:public interface Task<U, V> { U execute(V input); }其中V是输入类型,U是任务的输出类型. 我要创建的是一个Chain类,它将链接一个任务列表. 例如,我想执行:Task1< TypeA,TypeB> – &GT Task2< TypeB,TypeC> – &GT Task3< TypeC,TypeD> 因此,该链类将是任务< TypeA,TypeD>. 所以我编写了这段代码,它不能编译:public class Chain<U, V> impleme...

Java高级-泛型

概念 泛型即参数化类型,是JDK1.5中引入的一个新特性。 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。 泛型的本质为参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。定义 如下所示://泛型类 public class Box<T>{//泛型变量public T t; Person(T t){this.t = t;}public T getValue(){return t;} } 泛型可以声明多个类型参数,...

java – 卷积泛型类型声明的解释.什么类<?扩展类<?延伸演员> []>实际意味着什么?【代码】

想象一下,我们有这门课.public class Actor {...}然后我们有一个方法需要一个类型的参数: 类&LT ;?扩展类<?延伸演员> []> 这甚至可能吗?我无法破译它.解决方法:是.让我们从内到外工作: >? extends Actor表示Actor或Actor的任何子类型.>班级<? extends Actor> []表示Class< T>的数组.对象,其中每个对象表示一个类,该类是Actor或者是Actor的子类型.>班级<?扩展类<?延伸演员> []>表示类对象数组的类,其中每个对象都是Actor或其...

java – LocalDate中的泛型问题【代码】

我有以下代码.我期待Arrays.asList(LocalDate.of(2014,1,1),LocalDate.of(2015,2,2))转换为LocalDate列表.但我在max(日期)中得到编译时错误.可能是导致此错误的原因是什么?import java.time.LocalDate; import java.util.ArrayList; import java.util.Arrays; import java.util.List;public class C {public static <T extends Comparable<T>> T max(List<T> d) {if (d.size() == 0) {return null;}T maxValue = d.get(0);for (T ...

Java泛型 – 擦除概念【代码】

我有一些代码如下:public class java_generic {public static void main(String[] args) {T t = new X();t.<Object>m(new Object());t.<String>m(new String());}static class T {<E> void m (E e){System.out.println("here is T");}}static class X extends T {void m (String o){System.out.println("here is X"); }}}根据我的理解,在类型擦除后,T类将成为:static class T {void m (Object e){System.out.println(...

集合排序泛型类型java【代码】

我一直在寻找我的问题的答案.我发现了大量相似的主题,但我仍然不知道该怎么做. 我有一个类,我想在排序的ArrayList中存储对象. 例如,我创建了这个类:public class Kwadrat implements Comparable<Kwadrat> {private int a;public Kwadrat(int a){this.a = a;}public int get_size(){return a*a;}public int compareTo(Kwadrat b){if(b.get_size() > get_size()){return -1;}if(b.get_size() < get_size()){return 1;}return 0;} }这...

java快排泛型实现

一、用泛型实现快排,可以传入不通类型进行排序,比如String数组,Integer数组。 /** * 快速排序 * * @author chx * */public class QuickSort { /** * 数组内数值的交换函数 * * @param arr * 原数组 * @param leftIndex * 左索引 * @param rightIndex * 右索引 */ public static <T> void change(T[] arr, int leftIndex, int rightIndex) { T temp = arr[leftIndex]; arr[leftIn...

java – 如何获取泛型参数类型的类实例【代码】

在代码中,如果我写这样的代码行:GClass<Double> x = new GClass<Double>();让我们说,这个课程是这样的:public static class GClass<T> {private T value = null;public GClass() {// What is T? } }在我插入问题“什么是T?”的地方,我不想要值(即为null),而是它的类型(即Double).解决方法:除非你添加一个构造函数参数来接受Class< T>,否则你无法在执行时找到T.参数和传递在您的情况下使用Double.class调用它.然后,您可以存储该类...

java – 使用泛型编译错误【代码】

有以下课程:public class LivingBeing { … }那就是public class Human extends LivingBeing { … }现在还有这个包装器:public class LivingBeingWrapper<T extends LivingBeing> { … }并且为了完成图片,还有方法public boolean validate(LivingBeingWrapper<LivingBeing> livingBeingWrapper)现在编写以下代码时LivingBeingWrapper<Human> wrapper = createHumanWrapper(); validate(wrapper);我得到以下编译错误:The method ...

java – 使用泛型进行类型检查【代码】

这是一个插图类:class TypeChecker<T> {boolean isGood(Object something) {// won't compilereturn (something instanceof T);// maybe works, but oh so ugly!try {@SuppressWarnings("unchecked")T tmp = ((T) something);}catch(ClassCastException e) {return false;}return true;} }有什么好办法吗? 特定目的与示例略有不同,但想法是相同的 – 检查类型T(参数)的变量是否可以保存某个对象.解决方法:使用Class#isInstance.c...

Java – 返回指定泛型类型的列表【代码】

我有一个包含各种子类型的对象列表:List<Dog> dogList = new ArrayList<>(); dogList.add(new Poodle()) dogList.add(new Dalmation());我想搜索此列表并返回指定类的所有实例:public <T extends Dog> List<T> getAll(Class<T> dogType){List<T> returnObjects = new ArrayList<>();for(T obj : dogList){if(dogType.instanceOf(obj){returnObjects.add(dogType.cast(obj));}}return returnObjects; }用法:List<Poodle> poodle...

java界面泛型投射问题【代码】

类型List中的方法add(capture#2-of?extends IObject)不适用于参数(IDerived)protected List<? extends IObject> getObjects() {List<? extends IObject> objects = new ArrayList<IObject>();for (String id: item_ids){IDerived object = (IDerived) readObject(id);objects.add(object); #error}return objects; }interface IDerived extends interface IVersionedObject extends interface IObject如果我将对象的类型更改为Lis...