Java 集合枚举泛型(二)

本文出自:http://blog.csdn.net/dt235201314/article/details/70228260

一丶慨述

本文为上篇文章的补充,一篇文章说清是不可能,上一篇以集合为主,本篇主要说泛型,关于枚举,参考下文

Java 枚举(enum) 详解7种常见的用法

二丶正文

泛型

Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。

泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)

例:  ArrayList al=new ArrayList();

及泛型,作用:ArrayList al 里只能存入Srting类型

直接上Demo

/**
 * 
 *     author : JinBiao
 *     CSDN : http://my.csdn.net/DT235201314
 *     time   : 2017/04/16
 *     desc   : 泛型演示
 *     总结   ; 1.Class在实例化的时候,T要替换成具体类
 *                Class它是个通配泛型,?可以代表任何类型
 *              2.受限统配,表示T的一个未知子类。
 *                下限统配,表示T的一个未知父类。
 *              3.泛型体现java反射,获取类方法 属性信息
 *              4.便于代码的复用,减少代码量
 *     version: 1.0
 * 
*/ public class Generics { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ArrayList al = new ArrayList(); // al 的类型就与 Dog绑定了 //创建一只狗 Dog dog1 = new Dog(); //放入到集合中 al.add(dog1); // Dog temp=(Dog)al.get(0); // Cat temp=(Cat)al.get(0); // Dog temp=al.get(0); //取al里中的第一个元素 不用强制类型转换 Gen gen1 = new Gen(new Bird()); gen1.showTypeName(); getData(al); } public static void getData(ArrayList data) { System.out.println("data :" + data.get(0)); } } //定义一个个Bird class Bird { public void test1() { System.out.println("aa"); } public void count(int a, int b) { System.out.println(a + b); } } //定义一个类 class Gen<T> { private T o; // 得到T的类型和名称 public Gen(T a) { o = a; } public void showTypeName() { System.out.println("类型是:" + o.getClass().getName()); //通过反射机制可以得到T类型的很多信息(比如说得到成员函数名) Method[] m = o.getClass().getDeclaredMethods(); // 打印 for (int i = 0; i < m.length; i++) { System.out.println(m[i].getName()); } } } class Cat { private String color; private int age; public String getColor() { return color; } public void setColor(String color) { this.color = color; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } class Dog { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } /** * 输出 类型是:javademo.generics.Bird count test1 data :javademo.generics.Dog@7d4991ad */
拓展学习:

Java中反射机制(Reflection)学习:http://blog.csdn.net/developer_jiangqq/article/details/7342632

http://www.cnblogs.com/lzq198754/p/5780331.html


这里写了个关于集合泛型枚举的小Demo

演示效果:

Java 集合枚举泛型(二)_第1张图片

设计思路:猫狗继承动物,ArrayList存数数据,类属性颜色用枚举l类表示:

CollectionEnumgGnericsActivity.Java

public class CollectionEnumgGnericsActivity extends Activity implements View.OnClickListener {
    private Button button, button1 , button2;
    private TextView textView;
    private ArrayListsuper Animal> arrayList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_collection_enumg_gnerics);
        button= (Button) findViewById(R.id.button);
        button1 = (Button) findViewById(R.id.button1);
        button2 = (Button) findViewById(R.id.button2);
        textView = (TextView) findViewById(R.id.text);
        arrayList = new ArrayList<>();
        button.setOnClickListener(this);
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
    }

    public void button(){
        Dog dog = new Dog("多多","2", Color.green.toString());
        arrayList.add(dog);
        setText();
    }

    public void button1(){
        Cat cat = new Cat("喵喵","3", Color.blue.toString());
        arrayList.add(cat);
        setText();
    }

    public void button2(){
        arrayList.clear();
        textView.setText("");
    }

    public void setText(){
        textView.setText("");
        String string = "";
        for(int i=0;i <  arrayList.size();i++){
            Animal animal = (Animal) arrayList.get(i);
            String text = "姓名" + animal.getName() + "   年龄" +  animal.getAge() + "  颜色"  + animal.getColor() + "\n";
            string += text ;
        }
        textView.setText(string);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button:
                button();
                break;
            case R.id.button1:
                button1();
                break;
            case R.id.button2:
                button2();
                break;
        }
    }
}

相关问题:

【Java】泛型中 extends 和 super 的区别?

写在最后

如果文章对你有帮助,欢迎点赞支持

代码下载:https://github.com/JinBoy23520/CoderToDeveloperByTCLer

不懂得地方,微信扫二维码提问


Java 集合枚举泛型(二)_第2张图片



你可能感兴趣的:(Java,TCL,雏鹰飞翔计划,·,Android,篇,java加强入门到精通)