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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 快乐的黑马 中级黑马   /  2014-1-11 19:54  /  1461 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Test {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                int[] arr = {1,2,3,4};
                printArray(arr);//编译不通过,这是为什么?
        }
        public static <T>void printArray(T[] arr){
               
                for(T obj : arr){
                        System.out.println(obj);
                }
       
        }
}

自定义一个泛型方法,为什么编译器会报错呢?我改了一下代码,写成这样:
public class Test {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                T[] arr = {1,2,3,4};
                printArray(arr);//编译不通过,这是为什么?
        }
        public static <T>void printArray(T[] arr){
               
                for(T obj : arr){
                        System.out.println(obj);
                }
       
        }
}
还是编译不能通过,求解答。共同进步,谢谢!

4 个回复

正序浏览
注意泛型的规范使用
public interface BaseDao<T> {
        //写操作
        public void saveEntity(T t);
        public void updateEntity(T t);
}
@SuppressWarnings("unchecked")
public abstract class BaseDaoImpl<T> implements BaseDao<T> {

        @Resource
        private SessionFactory sf ;
       
        private Class<T> clazz ;
       
        public BaseDaoImpl() {
                ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();
                clazz = (Class<T>) type.getActualTypeArguments()[0];
               
        }

        public void saveEntity(T t) {
                sf.getCurrentSession().save(t);
        }

        public void updateEntity(T t) {
                sf.getCurrentSession().update(t);
        }
看看上面开发中的代码我想你应该懂了泛型的用法了吧注意放回类型和限定类型
回复 使用道具 举报
public class Test {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                int[] arr = {1,2,3,4};
                printArray(arr);//编译不通过,这是为什么?
        }
        public static <T>void printArray(T[] arr){//注意这里的两个T都应该是T[].问题出在这里
                 //上面这里<T[]>

                for(T obj : arr){
                        System.out.println(obj);
                }
        
        }
}
回复 使用道具 举报
你随便用一个T,系统哪知道T代表什么东西!
回复 使用道具 举报
你的T类没有写吧!怎么使用啊Integer  String这些类都已经实现啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马