黑马程序员技术交流社区

标题: 关于泛型方法的问题一枚 [打印本页]

作者: 快乐的黑马    时间: 2014-1-11 19:54
标题: 关于泛型方法的问题一枚
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);
                }
       
        }
}
还是编译不能通过,求解答。共同进步,谢谢!
作者: ↑↓ME→←    时间: 2014-1-12 11:12
你的T类没有写吧!怎么使用啊Integer  String这些类都已经实现啦
作者: ↑↓ME→←    时间: 2014-1-12 11:13
你随便用一个T,系统哪知道T代表什么东西!
作者: NO?    时间: 2014-4-2 00:43
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);
                }
        
        }
}

作者: 血剑无痕    时间: 2014-4-3 20:21
注意泛型的规范使用
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);
        }
看看上面开发中的代码我想你应该懂了泛型的用法了吧注意放回类型和限定类型





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