
错误: 不兼容的类型: char[]无法转换为Object[],请问这是为什么呢?char[]难道不是引用类型的吗?
char[]有Object对象的所有方法,以及自己的length域。麻烦各位热心的网友有过操作经验在来回答。。谢谢哈!...
char[]有Object对象的所有方法,以及自己的length域。
麻烦各位热心的网友有过操作经验在来回答。。谢谢哈! 展开
麻烦各位热心的网友有过操作经验在来回答。。谢谢哈! 展开
3个回答
展开全部
以C#为例,在C#中所有数组类型都继承至Array抽象类,即char[]和Object[]都是Array类的直接子类,然而char[]和Object[]之间没得直接的继承关系,所以char[]和Object[]之间是不能类型转换的。
更多追问追答
追问
那么String[] 却可以向上转型为 Object[]又有何解呢?难道仅仅是因为char[]带了char?
追答
原因很简单呀,int[]是Object的子类,子类和父类之间是可以进行类型转换的,然而int[]和Object[]之间又不是子父类关系,而是平级关系,所有它们之间是不能相互类型转换的
展开全部
因为char是基本类型,所以char数组就不能转换为Object数组,Integer[]可以转换为Object[]是因为Integer是引用类型,那你试试int[]数组能转换为Object[]吗?照样不能,就是因为int是基本类型,int对应的引用类型是Integer,char对应的引用类型是Character,所以Character[]可以转换为Object[],将你的char[]改写成Character[]问题就解决了
更多追问追答
追问
您说的char确实是基本类型,但是char[]却是实实在在的引用类型(包括其他基本数组类型如int[],boolean[]...)。
他们的类型都不一样char.class != char[].class
追答
在java中,引用类型的数组类型既是Object的子类,也是Object[]的子类;而基本类型的数组类型是Object的子类,但却不是Object[]的子类,java就是这么规定的,没有为什么,不信的话你用instanceof操作符测试一下就知道了
int[] i={4,5};
System.out.println(i instanceof Object); //返回true
System.out.println(i instanceof Object[]); //编译报错
Integer[] ii={7,8};
System.out.println(ii instanceof Object); //返回true
System.out.println(ii instanceof Object[]); //返回true
还需要提醒你的是,java和c#是不一样的,java中的Array类不是抽象类,而且有final关键字修饰,所以它是不能被继承的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char[] 是一个Object,不是Object[]
追问
举个例子?这不是肯定的吗?java万物皆对象,String[]也是一个Object,Integer[]也是一个Object
追答
char [] 里每一个都不是Object
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询