Java,泛型问题和Object,类型转换问题
classDog{Objectage=10;publicObjectgetAage(){returnage;}}泛型和Object什么区别?好多资料说,例如上面的类,一个...
class Dog{
Object age = 10;
public Object getAage(){
return age;
}
}
泛型和Object什么区别? 好多资料说,例如上面的类,一个属性用Object定义,外面用这个类,获取这个类里面的age属性,外面就要使用 显式 类型转换,才能使用! 还要猜什么这个属性使用什么类型
外面猜年龄 是使用 int类型, int = dog.getAge(); 这样要猜是吧?好吧
我不猜你, 我直接 Object = dog.getAge(); 不就可以了,里面用Object 我外面也用Ojbect就不用接受不就可以了? 还泛型? 求高手高手解答,! 问好多人没一个能解析到意思!
都用Object定义类型,不就把java变成javascript那样若类型语言了,又不报错! 用着多爽?还泛型?
求高手高手解答,! 问好多人没一个能解析到意思! 展开
Object age = 10;
public Object getAage(){
return age;
}
}
泛型和Object什么区别? 好多资料说,例如上面的类,一个属性用Object定义,外面用这个类,获取这个类里面的age属性,外面就要使用 显式 类型转换,才能使用! 还要猜什么这个属性使用什么类型
外面猜年龄 是使用 int类型, int = dog.getAge(); 这样要猜是吧?好吧
我不猜你, 我直接 Object = dog.getAge(); 不就可以了,里面用Object 我外面也用Ojbect就不用接受不就可以了? 还泛型? 求高手高手解答,! 问好多人没一个能解析到意思!
都用Object定义类型,不就把java变成javascript那样若类型语言了,又不报错! 用着多爽?还泛型?
求高手高手解答,! 问好多人没一个能解析到意思! 展开
推荐于2017-11-27
展开全部
简单点说,不扯那些书上的,弱类型语言无类型,高级语言有类型,每个类型有自己的方法,这里就说java,java基本数据类型有8中,对应的包装类也是有方法的,比如int对应的Integer,按你说的统一就Object类型,那么每个类型都有自己的方法,你都用Object方法要怎么用?你可以如果我要用String,那么我就把Object转换为String,可是往往写代码的时候,你还不知道未来那个数据是什么类型,这种情况也是有的,再说泛型,泛型这个东西简单来说就是在编译期间确定类型,这样IDE可以帮你检查类型,举例一个集合List,这里以前是可以装任何Object的,有了泛型以后,我们可以这样List<String>意思说这里的集合我只能装字符串类型,否则编译时就过不去,这样的好处是你内心知道这里只是字符串,未来在从集合中获取一个对象时,直接就可以用字符串的方法,而不是拿出Object在转换,并且如果只是单纯的List集合,你如何确定代码装入集合中的对象就一定是字符串,倘若很复杂的代码,里面不小心装入的Integer对象,也很难检测,恐怕只有运行报错的时候你才知道,最后要说泛型只存在于编译期间,编译过后泛型擦除!
展开全部
你的 这个问题 问的很有意思呀,如果你问的人没人能给你好的解释,说明他们都没怎么用泛型,或者用泛型的地方不需要一定用泛型。
如果你写的calss(或者说功能)能够具体的将某见事情完成,那么确实不是一定要用泛型,也就是说你既然能完成,那么传入传出的参数都是可预计的,可预计也就一定知道边界,也就知道类型了,也就不需要泛型。
以你问题中的代码为例,若age是一个传入的参数,并通过你的方法传出,但是如果age是int则传出age的值,是字符串则返回“”空,这就没办法了不是?
另外,如果你根本不知道传入的类型是什么,但是你要给他增加一个属性,而只有使用你方法的人通过别的手段才能知道这个东西的属性,那么也只能使用泛型。
补充一点,javascript 是很好的 面向对象语言,在某些地方优于java,
如果你写的calss(或者说功能)能够具体的将某见事情完成,那么确实不是一定要用泛型,也就是说你既然能完成,那么传入传出的参数都是可预计的,可预计也就一定知道边界,也就知道类型了,也就不需要泛型。
以你问题中的代码为例,若age是一个传入的参数,并通过你的方法传出,但是如果age是int则传出age的值,是字符串则返回“”空,这就没办法了不是?
另外,如果你根本不知道传入的类型是什么,但是你要给他增加一个属性,而只有使用你方法的人通过别的手段才能知道这个东西的属性,那么也只能使用泛型。
补充一点,javascript 是很好的 面向对象语言,在某些地方优于java,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询