A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑夜里的白猫 中级黑马   /  2013-10-14 23:44  /  1676 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Demo4
{
        public static void main(String[] args)
        {
                System.out.println(new Person());

                Person p = new Person();
            System.out.println(p.getClass().getName()+'@'+Integer.toHexString(hashCode()));//这里说hashCode()无法从静态上下文中引用非静态hashCode()
                System.out.println(p);
        }
}
class Person
{
}


4 个回复

倒序浏览
System.out.println(p.getClass().getName()+'@'+Integer.toHexString(hashCode()));
改成
System.out.println(p.getClass().getName()+'@'+Integer.toHexString(p.hashCode()));
hashCode()方法需要调用者...亲应该是这样

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1

查看全部评分

回复 使用道具 举报
每个方法都是继承object类的hashCode方法是object类中的方法,子类要么去继承要么去重写该方法,上面的代码hashCode方法没有对象去调用
回复 使用道具 举报
静态方法在类一加载的时候就加载,直接从类名调用.
而hashCode()方式是实例方法,需要在对象创建以后由对象调用.
回复 使用道具 举报
hashCode()不是静态方法。而你的main函数是静态方法。静态方法不能直接调用非静态方法。
你想,静态方法是可以在对象出现前调用的,而非静态方法不可以。所以……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马