黑马程序员技术交流社区

标题: 关于学习张老师基础加强的数组反射问题; [打印本页]

作者: 邓杰    时间: 2012-6-20 09:16
标题: 关于学习张老师基础加强的数组反射问题;
本帖最后由 邓杰 于 2012-6-20 10:50 编辑

package studynotezhang.day1;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ReflectTest
{
  public static void main(String[] args)throws Exception
  {
int[] a1=new int[3];
  int[] a2=new int[4];
  int[][] a3=new int[2][3];
  String[] a4=new String[3];
  System.out.println(a1.getClass() == a2.getClass());
  System.out.println(a1.getClass() == a3.getClass());//这里会报错;
  System.out.println(a1.getClass() == a4.getClass());//这里会报错;
}
错误提示:Incompatible operand types Class<capture#8-of ? extends int[]> and Class<capture#9-of ? extends int[][]>
问问为什么;
和张老师写的一样啊。为什么他没有报错返回结果为true false false;
有的朋友说是JDK版本的问题;我的是7.0; 可后面的版本肯定是要兼容前面的版本的啊;不然以前的哥们不就悲剧了;对吧?大家看看该怎么解决;
好吧。既然是版本的问题,可是以后我们开发的时候肯定都是用后面高级的版本;那这个问题应该怎么解决呢,总不能都用1.4的版本去开发吧;
坐等强人解决这个问题;
作者: 车风波    时间: 2012-6-20 09:25
1.5以后有泛型约束 a1.getClass()返回值是Class<? extends int[]>,a4.getClass()返回值是 Class<? extends String[]>。
你把JDK改成1.4的就没事了。
作者: 余银桂    时间: 2012-6-20 10:01
使用equals能解决问题。Java中的“==”和“equals”还是有区别的

           System.out.println((a1.getClass()). equals (a3.getClass()));
                 System.out.println((a3.getClass()). equals (a4.getClass()));   

具体问题的确是JDK版本的问题!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2