Java 集合枚举泛型(二)
来源:互联网 发布:mac铁锈红是什么色 编辑:程序博客网 时间:2024/05/19 19:13
本文出自:http://blog.csdn.net/dt235201314/article/details/70228260
欢迎Star(updating):https://github.com/JinBoy23520/CoderToDeveloperByTCLer
一丶慨述
集合枚举泛型续
二丶正文
泛型
Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)
例: ArrayList<String> al=new ArrayList<String>();
<String> 及泛型,作用:ArrayList al 里只能存入Srting类型
直接上Demo
/** * <pre> * author : JinBiao * CSDN : http://my.csdn.net/DT235201314 * time : 2017/04/16 * desc : 泛型演示 * 总结 ; 1.Class<T>在实例化的时候,T要替换成具体类 * Class<?>它是个通配泛型,?可以代表任何类型 * 2.<? extends T>受限统配,表示T的一个未知子类。 * <? super T>下限统配,表示T的一个未知父类。 * 3.泛型体现java反射,获取类方法 属性信息 * 4.便于代码的复用,减少代码量 * version: 1.0 * </pre> */public class Generics { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<Dog> al = new ArrayList<Dog>(); // 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<Bird> gen1 = new Gen<Bird>(new Bird()); gen1.showTypeName(); getData(al); } public static void getData(ArrayList<?> data) { System.out.println("data :" + data.get(0)); }}//定义一个个Birdclass 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
演示效果:
设计思路:猫狗继承动物,ArrayList<? super Animal>存数数据,类属性颜色用枚举l类表示:
CollectionEnumgGnericsActivity.Java
public class CollectionEnumgGnericsActivity extends Activity implements View.OnClickListener { private Button button, button1 , button2; private TextView textView; private ArrayList<? super 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 集合枚举泛型(二)
- Java 集合枚举泛型(一)
- Java基础(六) 集合之(二) 泛型及枚举类型
- Java枚举(二)
- Java中的枚举(二)
- Java枚举类型(二)
- java集合(二)
- Java集合(二)
- Java集合(二)
- JAVA---------集合(二)
- java枚举元素集合
- Java集合概述(二):List集合
- Java集合(二)List集合
- Java集合简述(二)
- Java集合总结(二)
- JAVA集合类型(二)
- java-集合类(二)
- JAVA集合(二)-ArrayList
- static_cast、const_cast用法
- 万能地图下载器与Oruxmaps完美结合制作离线地图
- 【Flask】cookiecutter-flask生成的database.py代码分析
- tensorflow笔记:流程,概念和简单代码注释
- Flink传递参数给函数
- Java 集合枚举泛型(二)
- hadoop上传文件报错
- ORACLE 存储过程 in 参数问题
- jsp学习(3)-----jsp的6个动作
- 百度编辑器单独作为图片上传文件上传功能,百度编辑器做缩略图
- Jfinal项目搭建
- 微信第三方平台:小程序模板开发与发布
- Oralce数据库查询某张表某个字段的值有相同的记录并统计个数
- CSS3的属性选择器