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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李月 中级黑马   /  2012-5-10 10:57  /  2514 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class genen <T>{
       
        public T add(T t)
        {
                return null;
        }
        public void delete(T t)
        {
               
        }
       
        public static <E> void update(E obj)
        {
               
        }

}


为什么静态方法中定义的泛型和类中的不一样呢?
还有毕老师说的静态方法不可以访问类上定义的泛型。这句话要怎样理解呢?

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

3 个回复

倒序浏览
静态是随着类加载就存在在方法区中,是在你创建对象之前就已经存在了,所以不能使用类上泛型。
不知我理解的对不对啊 不对之处已指正。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
首先要明白,定义在类上的泛型,只对这个类的对象起作用,如果对象不存在,那么这个泛型就不起作用。由于静态成员方法是优先于类的对象存在的,所以定义在类上的泛型对静态方法起不了作用,要单独对静态成员方法指定泛型。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
静态优先于对象存在,随着累的加载而加载,
泛型定义在方法是因为静态方法中的类型不确定,所以静态方法不可以访问类上定义的泛型
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马