package test.entity
public MyClass(){
//类的实现
}package test.test
import test.entity.MyClass();public somefunction(){
    Object a = new Object();
    MyClass b = new MyClass();
    println(((MyClass)a).getClass().getName());//打印a
    println(b.getClass().getName());//打印b
}代码是随手写的,为啥“打印a”和“打印b”出来的东西不一样阿
一个是“test.test.MyClass”,一个是“java.lang.class”。
为啥对象的类型不一样啊?

解决方案 »

  1.   

    println(((MyClass)a).getClass().getName());这里(MyClass)a 是会报
    java.lang.ClassCastException异常的只能将子类强制转换为父类,
    而父类是不能强制转换为子类的。
    不知道楼主是怎样运行的?
      

  2.   

    稍微说一下,这个是两个不同的类,我写的有点问题
    一个是MyClass类,在test.entity包里。
    一个是Test类,在test.test包里。
    somefunction()是Test的一个方法。
    所以不存在谁是父类,谁是子类的问题。
    以上确实可以执行。
      

  3.   

    打印的结果我也写错了,a的好像是“test.entity.MyClass”,b好像是“java.lang.class”。
    按理说两个的结果应该是一样的。但是实际却是不一样的。
      

  4.   

    个人认为(MyClass)a转型的时候只是属性变了,getClass()方法和getName()方法没有变。
      

  5.   

    我不是笨蛋,1楼的代码当然不能运行啊,我已经说了是随手写的,不是粘过来的。
    我只是在说一个现象,不是就代码本身来说事。
    何况那些本来就是伪代码,何必这么斤斤计较啊,难道不知道啥是伪代码么?谢谢7楼的。大概明白一点了。好像是先进行的getClass().getName(),再进行(MyClass)的强制转换。
    不知道是不是这样。
      

  6.   

    package test.entity
    public MyClass(){
    //类的实现
    }package test.test
    import test.entity.MyClass();public somefunction(){
        Object a = new Object();
        MyClass b = new MyClass();
        println(((MyClass)a).getClass().getName());//打印a;这个应该是向下转型吧,Object是所有类的基类啊
        println(b.getClass().getName());//打印b
    }
      

  7.   

    public class 类名..
      你连类都不是..还谈什么别的..  你那样的东西,,写在跟类名一样的类里面是构造方法而已!
      

  8.   

    暂且不说你这个程序是否完整,能否运行,只看
    Object a = new Object();
    MyClass b = new MyClass();
    println(((MyClass)a).getClass().getName());//打印a你把Object类型强制转换成MyClass类型不报错?应该报这个错吧:
    java.lang.ClassCastException: java.lang.Object cannot be cast to MyClass
      

  9.   

    楼主你代码错误太多了 连类class都没有,怎么能出结果呢,还是把你的运行代码贴出来吧。