为什gt s5830怎么用wifiB>?

A是B的子类,为什么List&A&就不是List&B&的子类?_问答_ThinkSAAS
A是B的子类,为什么List&A&就不是List&B&的子类?
A是B的子类,为什么List&A&就不是List&B&的子类?
如题。为什么会是这样呢?
因为都是List类,又没有继承关系
对象的继承代表了一种‘is-a’的关系,如果两个对象A和B,可以表述为‘B是A’,则表明B可以继承A。继承者还可以理解为是对被继承者的特殊化,因为它除了具备被继承者的特性外,还具备自己独有的个性。
父类和子类,或叫做基类和派生类,其中子类继承父类的所有特性,同时还定义新的特性。
注意对比的对象
A是B的子类 是A与B在比较
而List&A&是List&B&的子类 是List与List进行比较
你可以通过List&? extend b&这样的定义 来进行限定操作
List&A&的子类是
class XXX extends List&A&
Java里的泛型是通过类型擦除来实现的
Java中的泛型基本上都是在编译器这个层次来实现的。在生成的Java字节码中是不包含泛型中的类型信息的。使用泛型的时候加上的类型参数,会在编译器在编译的时候去掉。这个过程就称为类型擦除。
List &A& 和 List &B& 在编译完成以后,实际上指向的是同一份字节码
并不存在 List &A& 或者 List &B& 这2种类型 ,当然就更谈不上什么子类的问题了.
以下仅供参考 我C++不熟
你不是和C++模板搞混了?
C++的泛型实现方式不同
在C++中 确实会为 List &A& 和 List &B& 生成2个class
因为List&A&.class不成立。
一大堆回答都没讲到重点啊。。我来加点内容。这里涉及到两个概念:协变与逆变。(Covariance vs. Contravariance)
简言之,如果List&S&复合类型是协变的,那么如果S是T的子类,则List&S&也是List&T&的子类。如果List&S&是逆变的,结果颠倒,List&T&会变成List&S&的子类。
但是Java里的泛型不实现以上两种行为的任意一种。。Java的泛型是不变的(Invariance)。
为什么这么设计呢?先看一个数组的例子。在Java中,数组是协变的,于是Integer[]就是Number[]的子类了。于是我们能写出这样的代码:
Integer[] a = new Integer[3];
Number[] b = // a的类型是Integer[],是Number[]的子类
b[0] = 3.14; // 运行时错误
Java的类型安全(Type Safety)的保证已经被破坏了。Java会把数组的元素应有类型保存起来(Reification),保证能在运行时检测到这种非法操作。
假设List是协变的,那么如下把Float放进Integer的代码:
List&Integer& li = new ArrayList&Integer&();
List&Number& ln = // li的类型是List&Integer&,属于List&Number&的子类
ln.add(new Float(3.1415)); // 不会有错误
就能运行。而也提到,Java的泛型采用了类型擦除,这样就没法保证List里会不会被塞进一个Float,因为在运行时List看到的全都是Object。因此为了防止这类事情发生,Java的泛型是不变的。
那有没有办法在Java里用上协变或者逆变的泛型呢?答案是肯定的,需要在声明里加wildcard:
// 1.协变范例
List&? extends Number& num = new List&Double&();
// 2.逆变范例
List&? super Number& num = new List&Object&();
但是在第一种情况中就不能呼叫参数里带有?的函数了,例如:
class Container&E& {
public set(E data) {
this.data =
public E get(E data) {
// 某方法中
Container&? extends Number& num = new Container&Double&();
num.set(new Float(3)); // 编译时错误
这里同样是为了保证Type Safety。不能把Float传给Container&Double&。
同理,在逆变的时候就不能呼叫返回值带?的函数,除非接受返回值的变量类型是Object。
Container&? super Number& num2;
Number res = num2.get(); // 编译时错误
部分来源:
添加你想要问的问题
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信关于html。。。为什么有时候用&b&不能加粗?要用&strong&_百度知道
关于html。。。为什么有时候用&b&不能加粗?要用&strong&
我是个新入门的。。只会很简单的更改网页 发现有时俯户碘鞠鄢角碉携冬毛候&b&不能加粗字体 要用&strong&这是为什么呢?
提问者采纳
看看是否&b&标签被设置了CSS样式,如果CSS样式中指定&b&标签没有加粗效果的话会出现这种情况。
其他类似问题
为您推荐:
strong的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁如果a&b&c那么7/a
7/b 7/c中最大的一个是几 为什么
分子相同,分母小的,数大
亲,对我的回答满意的话,就给个好评吧。如果还有不清楚的地方,可以跟我继续交流哦。
为您推荐:
亲,对我的回答满意的话,就给个好评吧。如果还有不清楚的地方,可以跟我继续交流哦。
因为a&b&c,所以组成的数a大
可以举例说明
7/A因为分子相同分母越小值越大
扫描下载二维码三星 GT-B9120为什么这么贵?就为了装了个逼?_百度知道
三星 GT-B9120为什么这么贵?就为了装了个逼?
求一个有点技术性的答案。。
提问者采纳
其实就是 低调的装···~~
因为是商务手机,商人有钱~~~~~
去论坛里看看吧 ~~~~~~~~~~~~~这个也没啥可说的 看看人家vertu
提问者评价
其他类似问题
为您推荐:
其他2条回答
因为性能好
哥们,不是我说的,它性能还比不上盖世三 = =
问题补充:我是说手机,三星 GT-B+的那种 不明白8800gt为什么这么贵 9800GT也比它便宜好多 8800GT不是几年前就有了我看来以上的一些留言
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁举一反三(巩固练习,成绩显著提升,去)
根据问他()题库系统分析,
试题“已知a、b、c在数轴上的对应点的位置如图所示.试分析下列式子...”,相似的试题还有:
实数a、b、c在数轴上的对应点的位置如图所示,下列式子中正确的有()①a+c>0;②a+b>a+c;③bc<ac;④ab>ac.
实数a,b,c在数轴上的对应点的位置如图所示,式子①b+c&0 ②a+b&a+c ③bc&ac ④ab&ac中正确的有()
(2004o烟台)a、b、c在数轴上的对应点的位置如图所示,下列式子中正确的有()(1)b+c>0,(2)a+b>a+c,(3)bc>ac,(4)ab>ac.

我要回帖

更多关于 三星gt i5508好用吗 的文章

 

随机推荐