为什么Java的容器不能装原始类型如int等,这个设计为了什么呢?

iejrwjr 2012-08-04 08:35:58
如题,要是Java的容器运行其中的对象是int,char之类的基本类型,会有什么问题么?
...全文
450 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wodeqiu 2013-07-26
  • 打赏
  • 举报
回复
为什么?因为Java是面向对象编程。。
qertyop 2012-08-08
  • 打赏
  • 举报
回复
楼主,我现在回头想了一想,再看一看其实,在最新版本,可以说在1.5加入泛型之后,可以说更加明确了。比如说: public class List<E extends Comaprable<E>>{
public void add(E target){
...
}
}
这是非常简化版本的List接口,实际会很复杂,但从这个版本可以看出,在初始化容器时需要指定泛型类,当然可以不加,这是为了兼容1.5之前的版本,但会有提示,从add方法可以看出添加的必须是一个泛型类E的对象,那么为什么可以添加int这些基本数据类型呢?这也是用到了1.5增加的另一个功能,那就是自动装箱。Good Luck!
Sad4This 2012-08-05
  • 打赏
  • 举报
回复
因为基本类型不是对象
qqliang1314 2012-08-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

引用 1 楼 的回复:

java的容器中可以放基本的数据类型,但是是以包装类的形式,如int 在 容器中是先包装成Integer,再转变成Object存放。任何一种数据类型或者对象放进容器中后都会失去原有的类型,变成 Object,从容器中取出后进行转型就可以了


我的问题是: 为什么当初Java的容器要这样设计,不能直接支持原始类型。
这样设计有什么好处,或者说有什么历史原因……
[/Quote]

《Think in java》 中是这样解释的: 由于当初编写集合时,那个集合的程序员根本不知道用户到底想把什么类型置入集合。若指示某个集合只允许特定的类型,会妨碍它成为一个“常规用途”的工具,为用户带来麻烦。为解决这个问题,集合实际容纳的是类型为Object的一些对象的句柄。 举个例子,如果集合里面放的是 Cat类型,那么只能放cat,放个 狗 Dog 进去就会报错 ,如果设计成Object,任何动物都可以放到集合里
my_kudy 2012-08-05
  • 打赏
  • 举报
回复
因为java 总的一层来说:
万物皆对象..
而容器里面可以存储基本数据类型
其中经历了(装箱的一个过程.)

如果说好处的:
万物皆对象..,你没对象就是不靠谱.
yjbukn0108 2012-08-05
  • 打赏
  • 举报
回复
Integer 等关键字将基本类型数据转换成Object 类型
老紫竹 2012-08-05
  • 打赏
  • 举报
回复
原始类型如int等?

有数组就足够了!
qertyop 2012-08-04
  • 打赏
  • 举报
回复
容器类里放的其实是对象,基本类型不是完全的对象,所以在会转换为相应的封装类
iejrwjr 2012-08-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

java的容器中可以放基本的数据类型,但是是以包装类的形式,如int 在 容器中是先包装成Integer,再转变成Object存放。任何一种数据类型或者对象放进容器中后都会失去原有的类型,变成 Object,从容器中取出后进行转型就可以了
[/Quote]

我的问题是: 为什么当初Java的容器要这样设计,不能直接支持原始类型。
这样设计有什么好处,或者说有什么历史原因呢?

谢谢。
qqliang1314 2012-08-04
  • 打赏
  • 举报
回复
java的容器中可以放基本的数据类型,但是是以包装类的形式,如int 在 容器中是先包装成Integer,再转变成Object存放。任何一种数据类型或者对象放进容器中后都会失去原有的类型,变成 Object,从容器中取出后进行转型就可以了

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧