Pfeffer
2017-08-17 01:14
采纳率: 53%
浏览 1.0k
已采纳

关于泛型的问题 Java 核心技术 一

Function: 但在添加或删除元素时,具有自动调节数组容量的功能,而不需要为此编写任何代码。

ArrayList<Employee> staff = new ArrayList<>();

这被称为“菱形” 语法,因为空尖括号<>就像一个菱形。
可以结合new操作符使用菱形语法。
编译器会检查新值是什么。
如果赋值给一个变量,或传递到某个方法,或者从某个方法返回,编译器会检查这个变量,参数或方法的泛型类型,然后将这个类型放在<>中。 在这个例子中,new ArrayList<>()将赋至一个类型为ArrayList的变量,所以泛型类型为Employee。

  1. 我在书上看到一个叫做 ArrayList(), 这个T 就是泛型吧。
  2. 求大神给写一个简单的泛型程序给我看一下。 (书上将Arraylist直接放到了继承中说,但是也是一笔带过,我上网查了一下,这个泛型也是一种对象类型,目的是为了统一,所以希望能有一个简单的程序加深一下理解)
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • 鼠小 2017-08-17 01:36
    已采纳

    看下面这个简单的例子能不能让你明白泛型是什么(临时想的可能体现不出来,泛型强大的技巧,但是能说明问题)

     /**
     * Created by zsl on 2017/8/17.
     */
    public class Demo<T> {
        private T t;
    
        public Demo(T t) {
            this.t = t;
        }
    
        public void sayT() {
            System.out.println(t.toString());
        }
    }
    
    class Main {
        public static void main(String[] args) {
            //会报错,,因为我规定了泛型是String,,而不是Integer
            // Demo<String> demo = new Demo<String>(1);
            //不会报错,,符合泛型
            Demo<String> demo = new Demo<String>("123");
            demo.sayT();
        }
    }
    

    泛型说白了就是一种约束,,例如集合中,如果不添加泛型约束,遍历时不能做同一处理

    有问题还可以追问,,例子仅供参考,,jdk1.8完美运行。

    打赏 评论
  • Tsui丶 2017-08-17 01:17
    打赏 评论
  • Pfeffer 2017-08-17 01:42
     /**
     * Created by zsl on 2017/8/17.
     */
    public class Demo<T> {
        private T t; 
    
        public Demo(T t) { // 初始化
            this.t = t; 
        }
    
        public void sayT() {
            System.out.println(t.toString());
        }
    }
    
    class Main {
        public static void main(String[] args) {
            //会报错,,因为我规定了泛型是String,,而不是Integer
            // Demo<String> demo = new Demo<String>(1);
            //不会报错,,符合泛型
            Demo<String> demo = new Demo<String>("123");
            demo.sayT();
        }
    }
    

    难道难道泛型不是说讲一大帮不同的东西放在一起吗,比如我整形就是为字符串类型,当然我知道我说的这个其实是强制类型转换,但是我想借一个这个例子来表达一下内心的疑问

    打赏 评论
  • xhl_2017 2017-08-17 01:47

    1,感觉接触Java不长啊,刚开始建议一定要严谨,没有菱形语法一说,还有一般写法是List staff = new ArrayList();
    2,2楼例子还是不错的,其实泛型太简单了,简单到可以一看而过,不知道你在纠结什么
    3,有时间可以看看源码

    打赏 评论
  • tomeasure 2017-08-17 02:08

    范型嘛,另一个说法就是范化的模型,也就是让这个模型具有对不同种类对象的通用性,如果有开发经验的话应该会非常容易理解这个概念。
    我在一开始学范型的时候一筹莫展,不过最近学了学C++的模板,发现范型或者模板确实是很伟大的一项创造。

    打赏 评论
  • kbc_kbc 2017-08-17 02:14

    你想了解泛型?你那本核心技术第八章专门介绍泛型程序设计,可以看看前几页,先成为第一阶段的选手。更多的看不懂别纠结,以后看。

    打赏 评论
  • 勤勉之 2017-08-17 11:57

    泛型在建立集合的时候偶有用到,里面只能放对象类型。

    将基础数据类型的首字母大写,就叫他们的对象类型
    Integer 是int 的对象类型。
    里面也可以写对象

    打赏 评论
  • 勤勉之 2017-08-17 11:58

    一般都是List<泛型> list = newList<这个可以不写>();

    打赏 评论

相关推荐 更多相似问题