新手求解 java 向下转型问题

「已注销」 2017-07-11 11:02:13
我想问就是标红的那一行我传入的是int类型的数据 然后调用方法向上转型成了Object类 然后Object类按道理可以向下转型成String类啊?
package com.xyh.Demo;
class Point{
private Object x;
private Object y;
public Object getX() {
return x;
}
public void setX(Object x) {
this.x = x;
}
public Object getY() {
return y;
}
public void setY(Object y) {
this.y = y;
}
}
public class TestDemo {

public static void main(String[] args) {
// TODO Auto-generated method stub
Point p=new Point();
p.setX("东经100度");
p.setY(10);
String x=(String)p.getX();
String y=(String)p.getY();


}

}
...全文
331 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
MikeDDT009 2017-07-12
  • 打赏
  • 举报
回复
向下转型需要名却对象究竟是什么类型的。就如1,2L所说的,如果是你自己写的可能你能明确类型然后直接向下转型(哪怕自己写的不加判断个人也认为是不谨慎的,因为你的代码不可能完全你自己用),但是如果用别人写好的类库也是一样的。 如果你的代码意思打算是最后得到的结果是一个String类型的话,那么你只需要将你的自写类(这里是Point)重写一个下toString方法,然后用这个对象本身直接调用,不管到底是哪个引用。 也就是这个意思,在你重写并实现了toString方法的情况下 Object obj = new Point(); 或者 Point point = new Point(); 不论哪个引用或者说变量?来调用toString方法,得到的都是Point的toString结果 也就是obj.toString()和point.toString()的结果都是一样的
戴小码 2017-07-12
  • 打赏
  • 举报
回复
或者可以理解为父亲得听儿子得,这个有点难。
戴小码 2017-07-12
  • 打赏
  • 举报
回复
忘了它吧!java基本上不支持向下转型,编译你都过不去。因为向下转型非常的不安全。
丄whistle 2017-07-12
  • 打赏
  • 举报
回复
此时的y已经属于Integer类型,你再使用这种强转运行当然会报错。
soton_dolphin 2017-07-11
  • 打赏
  • 举报
回复
转型是有限制的,能通过 obj instanceof class 测试才能相互转型。 而且原始型不支持相互转型
李德胜1995 2017-07-11
  • 打赏
  • 举报
回复
第二个传入int型要转Integer....和String有什么关系??

62,628

社区成员

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

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