java 泛型的问题,求答案 10C

我在看《thingking in java》中泛型的无界统配符时的例子时,对于使用无界通配符参数作为? super 和? extends的参数时的编译结果很不理解.

 class Holder<T>
{
    void set(T t){}
    T get(){return null;}
}
class Main
{
    static <T> T exact3(Holder<? extends T> holder , T t)
    {
        return holder.get() ;
    }

    static <T> T exact4(Holder<? super T> holder , T t)
    {
        holder.set(t) ;

        return null ;
    }


    public static void main(String args[])
    {
        Holder<?> holder = new Holder<Long>() ;
        Long lng = 22L ;
        exact3(holder , lng) ;    //可以编译执行且不产生警告
        exact4(holder , lng) ;    //编译失败
    }
}

哪位大神解答一下


10.21 看答案由上往下,由左往右的。为什么Holder<? super T> holder不会报错?

0

3个回答

1

先说解决方法:把<?>改成Long就行,因为你全部用的是T,代码由上往下,由左往右解析,这样会导致第一个 ? 找不到类型,所以报错。另外说下一般用extends会比较多。

0

代码解析是由上往下,由左往右的。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
求两个不确定类型的数值相加的泛型方法
public class MyGenericTest2&amp;lt;T &amp;gt;{     /** 求两个不确定类型的数值相加的泛型方法      * 通过使用泛型 两个数字相加 无论什么类型都可以    * @param t1    * @param t2    * @param &amp;lt;T&amp;gt;    * @author   1279938986@qq.com    */    public &amp;l...
学士后Java集合框架和泛型课后习题答案
学士后Java集合框架和泛型课后习题答案
Java集合框架上机练习题(泛型1)
1 编写一个Book类,该类至少有name和price两个属性。该类要实现Comarable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系。在主函数中,选择合适的集合类型存放Book类的若干个对象,然后创建一个新的Book类的对象,并检查该对象与集合中的哪些对象相等。查询结果如下图: (1)代码import java.util.*;/
泛型 Java语言程序设计 第十九章(19.1、19.2、19.3、19.4、19.5)
程序小白,希望和大家多交流,共同学习 19.1 //使用数组实现栈,当数组满的时候,自动创建一个更大的数组 import java.util.Arrays; public class ArrayGenericStack&amp;lt;E&amp;gt; { private int max = 10; private int last = 0; private E[] array; ...
泛型 Java语言程序设计 第十九章(示例代码1)
程序小白,希望和大家多交流,共同学习 //定义泛型类 package stack; import java.util.ArrayList; public class GenericStack&amp;lt;E&amp;gt;//泛型类并没有指明数据类型 { private ArrayList&amp;lt;E&amp;gt; list = new ArrayList&amp;lt;&amp;gt;(); p...
Java 泛型以及一些需要注意的问题
Java泛型用于解决API设计者在设计底层程序时不知道应用程序开发者会具体使用哪些类型的应用场景。比如Java集合框架,API设计者不知道应用程序设计者在调用集合API时会往里面加入什么类型,JDK5通过引入泛型很好地解决了这个问题。 写在前面的—泛型程序主要用于库程序的开发,但是在应用程序开发中也会用到,作为一名码农,虽然用到泛型的场合比较少,但是还是有必要弄懂,以防工作卡卡壳。1 泛型类的设计J
Java 比较传入泛型数组(可以是任意数据类型) 的最大值最小值
题意,怎样根据传入的泛型数组比较最大最小值,数组的类型可以是int型,可以是String型,也可以是double型。。。 首先要定义一个泛型类,定义泛型T,存储咱们的最大值最小值,提供公开的方法,重载构造函数,存储咱们的最大最小值; /** * 创建泛型类 Num * @author 15053 * * @param &amp;amp;lt;T&amp;amp;gt; */ public class Num&amp;amp;lt;T&amp;amp;...
java-------------------复习集合练习与泛型
关于java的学习记录:1. 2.3.LinkedList相关方法:public void addFirst(E e)及addLast(E e) public E getFirst()及getLast()public E removeFirst()及removeLast()public E get(int index)4.训练:5.泛型:提高安全性(将运行期的错误转换到编译期),省去强转的麻烦泛型...
求泛型问题答案
有方法如下:rn[code=csharp] rn /// rn /// 通用应用程序缓存方法,缓存数据10分钟永不过期rn /// rn /// 委托getdata的返回值rn /// 缓存Keyrn /// 获取值得基本方法rn /// 向getdata传递的参数rn /// rn public static T GetCache(string key, Func getdata, params object[] paramobects)rn rn if (HttpRuntime.Cache[key] == null)rn rn T dataList = getdata();rnrn HttpRuntime.Cache.Add(key, dataList, null, Cache.NoAbsoluteExpiration,rn TimeSpan.FromMinutes(10), System.Web.Caching.CacheItemPriority.High, null);rn return dataList;rn rn return (T)HttpRuntime.Cache[key];rn rn[/code]rn生成的XML文档节点如下:rn[code=html]rn 通用应用程序缓存方法,缓存数据10分钟永不过期 委托getdata的返回值缓存Key获取值得基本方法向getdata传递的参数rn[/code]rnrn求教高人:rn1. GetCache后边的两个上句号是如何来界定的.为何是两个不是一个.rn2. Func后边的两个上句号是如何来界定的.
Java泛型常见面试题
泛型常见面试题
泛型实现传入数组求最大最小值
问题要求 随意传入一个数组,获得最大值和最小值,这个数组可以使用 整数类型 ,字符串类型,字符… 定义算法类 方法:public &amp;amp;lt;T extends Comparable&amp;amp;gt; Num getManMin(T[] objs){ 实现提取 } 1:定义最大最小的值的类 /** * 最大最小的值 * @author * * @param &amp;amp;lt;T&amp;amp;gt; */ public ...
关于Java泛型的面试题
1. Java中的泛型是什么 ? 使用泛型的好处是什么? 这是在各种Java泛型面试中,一开场你就会被问到的问题中的一个,主要集中在初级和中级面试中。那些拥有Java1.4或更早版本的开发背景的人 都知道,在集合中存储对象并在使用前进行类型转换是多么的不方便。泛型防止了那种情况的发生。它提供了编译期的类型安全,确保你只能把正确类型的对象放入 集合中,避免了在运行时出现ClassCastE
JAVA语言程序设计(进阶篇)第十版十九章课后题
泛型 什么是受限泛型类型? 不能使用new E(); 不能使用new e[]; 静态方法中不允许类的参数是泛型; 异常类不能是泛型; 什么是原始类型?原始类型为什么是不安全的?为什么Java中允许使用原始类型? 什么是原始类型? 没有指定具体类型的泛型类和泛型接口被称为原始类型; 原始类型是不带类型参数的GenerStack和ArratList泛型类型属于原始类型 1.GenerStack s...
《java编程思想——第十五章(泛型)》
泛型 15.2 简单泛型 泛型的主要目的之一就是用来指定容器要持有什么类型的对象,而且由编译器来来保证正确性。 // 类型参数T public class Holder3&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;T&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; { private T t; public
使用泛型实现(LRU)缓存
今天面试的笔试题有道笔试题用泛型实现缓存这是一种混合的数据结构,我们需要在哈希表的基础上建立一个链表。但是Java已经为我们提供了这种形式的数据结构-LinkedHashMap!它甚至提供可覆盖回收策略的方法。唯一需要我们注意的事情是,改链表的顺序是插入的顺序,而不是访问的顺序。但是,有一个构造函数提供了一个选项,可以使用访问的顺序。import java.util.LinkedHashMap; ...
《Head First Java》学习整理
序言:假期自学Java,首先选择了这本《Head First Java》,读起来,兴趣十足,一周时间结束。真切感觉这本书对学习Java的思想很有帮助,只是内容并不细致,对于每一部分,可以很形象的让你理解所要表达的内容,在思想层面非常棒,但是知识点不够具体。怪不得head first了~。但是还是要整理与回忆一下其中的知识,温故而知新嘛。
泛型(二)->擦除&擦除带来的问题
泛型(二)->擦除&擦除带来的问题 本篇首先介绍泛型的擦除,然后围绕泛型擦除所带来的问题进行精确打击,话不多说,我们直接开始正文. 文中很多例子都会用到Pair这个对象,这里统一声明.public class Pair<T> { private T first; private T second; public Pair() { first = null;
#定义泛型类#分别求Integer和Double型数组中元素的最大值,最小值,平均值
public class NumFunc<T extends Number> { T[]a; public NumFunc(T[]a){ super(); this.a=a; } private void sortNums() { // TODO Auto-generated method stub Arrays.sort(a); } publ
java泛型 泛型的内部原理:类型擦除以及类型擦除带来的问题
一、Java泛型的实现方法:类型擦除 前面已经说了,Java的泛型是伪泛型。为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉。正确理解泛型概念的首要前提是理解类型擦出(type erasure)。 Java中的泛型基本上都是在编译器这个层次来实现的。在生成的Java字节码中是不包含泛型中的类型信息的。使用泛型的时候加上的类型参数,会在编译器在编译的时候去掉
java泛型方法实现数值类型加法
1.实现数值类型加法实际开发中,经常有数值类型求和的需求,例如实现int类型的加法: public int add(int num1, int num2) { return num1 + num2; }有时候还需要实现long类型的求和: public long add(long num1, long num2) { return num1 + n
Java泛型集合排序(转)
List对象排序通用方法  在数据库中查出来的列表中,往往需要对不同的字段重新排序,一般的做法都是使用排序的字段,重新到数据库中查询。如果不到数据库查询,直接在第一次查出来的list中排序,无疑会提高系统的性能。 只要把第一次查出来的结果存放在session中,就可以对list重新排序了。一般对list排序可以使用Collections.sort(list),但如果list中包含是一个对象的话
Java中泛型与反射的问题
Java泛型: Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 从上面的描述中我么可以知道,Java泛型时作用在编译时期的,用来提供安全检测和规范代码,并且在运行期,就没有所谓的泛型,这是因为jvm对其进行了泛型擦出操作 测试...
JAVA泛型笔试面试总结
用途 数据结构类型的参数化 产生根源 例如在使用集合框架的时候,Vector里可以添加各种类型, v.add(new Person("tom",20)) Person p = (Person)v.elementAt(0) 如此使用,到处都需要强制转换。如果出现异常只能在运行时才会抛出。 集合中的泛型 例如Vector v = new Vector();  这里的是实际类型参数,限
java泛型学习-泛型的产生原因,使用方法以及具体的警告
如果缺乏能力,自由反而是一种负担   --使用Ubuntu有感 看魔乐的李兴华JAVA视频,视频倒是几年前百度云就存好了,也放在电脑上好久了.最近在重新补习JAVA,正好翻到了这些视频, 从接受的角度而言,视频讲解比看书要容易得多,只是自己一直有一种强迫症似的感觉,喜欢看书学习. 殊不知这是效率最低的方法,今天学的知识点其实时一个小时就能搞懂的知识点,但是因为知识缺陷的原因此前看到别的代
两个不确定类型的数值相加的泛型方法
public class MyGenericTest3&amp;lt;T &amp;gt;{     /** 求两个不确定类型的数值相加的泛型方法      * 通过使用泛型 两个数字相加 无论什么类型都可以     * @param t1     * @param t2     * @param &amp;lt;T&amp;gt;     */    public &amp;lt;T extends Number&amp;gt; Double...
Java泛型的实现:原理与问题
很久没写博客了,因为项目和一些个人原因。最近复习找工作,看书+回想项目后有一些心得,加上博客停更这么长时间以来的积累,很是有些东西可写。从今儿开始,慢慢把之前积累的东西补上来,方便以后查漏补缺。 先从最近的开始。昨天看到Java泛型相关的内容,有些疑惑,查资料之后发现这部分很有些有意思的东西,比如类型擦除带来的重写问题等等,一并记录在这篇文章里。1. 泛型定义看了很多泛型的解释百度百科,解释1,解
java 伪泛型与c#真实泛型思考
沃日,不知道被那本书忽悠了,下面两种方式使用泛型其实性能上没有差别,区别的只是自己手动写强制类型转换或者是编译器做强制类型转换(语法糖解析)。。。我就奇怪了这个cast操作怎么会省掉了。。。 List a=new LinkedList&amp;lt;String&amp;gt;();String s=(String)a.get(1);List&amp;lt;String&amp;gt; b=new LinkedList&amp;lt...
利用Java泛型实现简单的泛型方法
环境:Notpad ++ 6.0 + JDK 6.0.31   问题:编写一个泛型方法add(),当传入不同数字类型的值时,能够进行加法运算,(如可以传入int、long、float、double类型,但要对传入的值做一定的限定,如必须是数字)。   解决:利用泛型编写。   代码:   public class GenericAdd{ //泛型方法实现两个数相加 publ
java泛型1(泛型上限下限嵌套)
extends:泛型的上限 1.一般用于限制操作 2.不能使用者添加数据操作上,一般都是读取操作 3.规则 List---->List List---->List List------> 不能存放 List因为它等同于List super:泛型的下限>=  即父类 1.一般用于限制操作 2.能使用者添加数据操作上,不能添加父对象 3.规则 List---->List
泛型求和
public class MyGenericTest2&amp;lt;T &amp;gt;{    /** 求两个不确定类型的数值相加的泛型方法,不管什么数据类型直接全部转换为double类型    * 通过使用泛型 两个数字相加 无论什么类型都可以    * @param t1    * @param t2    * @param &amp;lt;T&amp;gt;    * @author   1279938986@qq.c...
关于泛型和重载的小问题
 首先描述问题,看代码。代码例子:view plaincopy to clipboardprint?import java.util.ArrayList;   public class Test {       public static String test(ArrayList list){           return "";       }       public static Integer test(ArrayList list){           return 1;       } 
Java泛型方法重写问题
java中的泛型是采用类型擦除的方式来实现,也即编译后所有原始类型的泛型类都共享同一份目标代码,例如这里的A<T>编译器编译为A,那么编译器对于引用类中泛型的方法,也即泛型方法进行类型擦除操作时是如何实现的呢?答案是采用最左边类型(当前T的初始具体父类型)来代替。
关于java中泛型dao的问题
dao层封装了操作数据库的各种操作,而我们每操作一个数据库表时要创建一个泛型dao,但是每个dao中许多重复的方法,这个时候就引进了泛型dao,泛型dao主要提高代码的复用率,同时泛型dao也比较复杂。 接下来步入正题.... 这是我整体的结构 定义dao GenericDaoImple实现GenericDao 实现add方法 sql语...
java基础(多线程,IO,集合,网络编程,泛型)
一些基础的东西..都是PPT,外带PPT的所有java以及class文件
Java,泛型的题目
一,定义泛型类,成员变量是Number类或其子类对象的数组,成员方法有:求数组元素最小值、最大值和平均值。创建泛型类对象,分别求Integer和Double型数组的最小,最大、平均值。二,按照题目要求,自己写的程序如下: Array.javapackage com.Shuzu3.java;public class Array <T extends Number>{ public Array(
java中泛型理解及泛型相关面试题
1.为什么需要泛型先看下面的代码:List list = new ArrayList();list.add(&quot;CSDN_SEU_Calvin&quot;);list.add(100);for (int i = 0; i &amp;lt; list.size(); i++) {  String name = (String) list.get(i); //取出Integer时,运行时出现异常  System.out....
数据结构--顺序栈java实现
1.顺序栈的简单实现,java (1)接口 public interface IStack { public void clear(); //清空栈 public boolean isEmpty(); //栈的判空 public Object peek(); //查询栈顶元素 public int length(); //栈的
java泛型问题分析
转载:https://baijiahao.baidu.com/s?id=1590433913335343847&amp;amp;wfr=spider&amp;amp;for=pc   Java泛型(Generic) 的引入加强了参数类型的安全性,减少了类型的转换,它与C++中的模板(Temeplates) 比较类似,但是有一点不同的是:Java的泛型在编译器有效,在运行期被删除,也就是说所有的泛型参数类型在编...
泛型:工作原理及其重要性
作者:Josh Juneau深入了解 Java SE 8 中的泛型。2014 年 7 月发布Java SE 8 的发布曾在 Java 界引起轰动。该版本中新增的和更新的语言特性可减少需要编写的代码量并使代码更易于使用,从而提高开发人员的工作效率。要充分了解一些新特性(如 lambda)的实现,您需要先了解该语言的核心概念。其中一个在许多 Java SE 8 特性中发挥了重要作用的概念是泛型。本文首...
关于java泛型擦除反编译后泛型会出现问题
首先,java中有泛型擦除这一概念。如果不太了解这一概念的同学可以自己找一下度娘。(简单来说:就是如果使用了泛型,在编译期的时候泛型会被擦除掉,也就是说jvm所看到的class文件中是不存在泛型这一概念和东西的。) 好。进入主题,关于泛型擦除,但是反编译class文件泛型会出现的问题。以例子来说明 首先,先写一个使用了泛型的java文件 import org.junit.Test; imp
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java 学习笔记答案 java课程设计答案