Android_注解与泛型
来源:互联网 发布:docker 阿里云 编辑:程序博客网 时间:2024/06/05 13:23
泛型:
1:泛型类引用类型可以是泛型类
class GenericDemo1 {public static void main(String[] args) {Data<String> data1 = new Data("zhangsan");System.out.println(data1.getData());Student stu = new Student();stu.setName("lisi");Data<Student> d1 = new Data<Student>(stu); System.out.println(d1.getData().getName());Data<Data<Student>> d2 = new Data<Data<Student>>(d1);System.out.println(d2.getData().getData().getName());}}// 泛型类class Data<T> {private T data;public Data() {}public Data(T data) {this.data = data;}public void setData(T data) {this.data =data;}public T getData(){ return data;}}class Student {private String name;public void setName(String name) {this.name = name;}public String getName() {return name;}}class Data2 { private int data; public Data2() { } public Data2(int data) { this.data = data; }public void setData(int data) {this.data =data; } public int getData(){ return data; }}
2:泛型类参数可以有多个
class GenericDemo2 {public static void main(String[] args) {Data<String, Integer> data1 = new Data<String, Integer>("zhangsan", 23);System.out.println(data1.getData1());System.out.println(data1.getData2());}}// 泛型类class Data<T1, T2> {private T1 data1;private T2 data2;public Data() {}public Data(T1 data1, T2 data2) {this.data1 = data1;this.data2 = data2;}public T1 getData1() {return data1;}public T2 getData2() {return data2;}}
3:泛型类可以继承泛型类
class GenericDemo3 {public static void main(String[] args) { Data1<String, Integer> data1 = new Data1("zhangsan", 23);System.out.println(data1.getData());System.out.println(data1.getData2());}}// 泛型类class Data<T> {private T data1;public Data() {}public Data(T data1) {this.data1 = data1;}public T getData() {return data1;}}class Data1<T, T2> extends Data<T> {private T2 data2;public Data1() {}public Data1(T data1, T2 data2) {super(data1);this.data2 = data2;}public T2 getData2(){return data2;}}
4:泛型类可以实现泛型接口
class GenericDemo4 {public static void main(String[] args) {GenericDemo4 gd = new GenericDemo4();gd.doMethod();}public void doMethod() {MyData<String, Integer> data = new MyData<String,Integer>();data.setData2(23);data.getData("zhgangsan");System.out.println(data.getData2());}}interface Data<T> {void getData(T data);}class MyData<T, T2> implements Data<T> {private T2 data2;public void setData2(T2 data2) {this.data2 = data2;}public T2 getData2() {return data2;}public void getData(T data) {System.out.println(data);}}
上边界限定:
// 泛型的上边界限定,传入的类型需要继承Animalclass Data<T extends Animal> {public void show(T data) {System.out.println(data);}}
注解:
1: jdk5提供了3个标准注解,也叫标注注解,不影响程序运行
* @Override // 标记这是重写的父类的方法
* @SuppressWarnings("unused") //压制
* @Deprecated //标注此方法已过时
2:自定义注解 通过关键词@interface修饰
创建:
public @interface MyAnnotation {// 属性的类型和名字String name();int age();Class shuxing();Color color();String[] hobby();String value() default "nihao";//default "nihao"默认值}enum Color {REG,GREEN,BLUE}
使用方式:
@MyAnnotation(name = "zhangsan", age = 1, shuxing = Student.class, value = "lisi")@MyAnnotation("zhangsan")//当属性的名字为value()时,可以直接写值@MyAnnotation(hobby={"football", "basketball"})@MyAnnotation(color=Color.REG)
3:jdk5提供的4个元注解,修饰注解的注解
元注解可以修饰自己定义的注解
@Retention(RetentionPolicy.SOURCE) //代码期间存在@Retention(RetentionPolicy.CLASS) //编译时@Retention(RetentionPolicy.RUNTIME) // 指定注解的存活时长(代码期间存在、编译器、运行时)@Target({ElementType.METHOD, ElementType.FIELD, ElementType.TYPE}) // 指定注解可以修饰的类型@Documented // 是否在javadoc文档中生成这个注解@Inherited // 这个注释是否可以被子类继承
使用元注解,修饰了自定义注解只能在方法上使用
@Target(ElementType.METHOD)public @interface MyAnnotation {String value();}
阅读全文
0 0
- Android_注解与泛型
- Android_闹钟与通知
- 黑马程序员之注解与泛型
- 第十六节 泛型与注解
- Android_模拟器安装与设置
- android_异步线程与Looper
- Android_横屏与竖屏
- Android_编程规范与常用技巧
- Android_编程规范与常用技巧
- Android_编程规范与常用技巧
- Android_头像裁剪上传源码与讲解
- Android_广播发送者与广播接收者
- java基础加强(三)(注解与泛型)
- 黑马程序员----java基础加强 注解与泛型
- SpringMvc4.1:注解JsonView与泛型返回类
- SpringMvc4.1:注解JsonView与泛型返回类
- 泛型和注解
- 注解和泛型
- 常引用(const type&)的特性及引用的本质
- 【Scikit-Learn 中文文档】模型选择:选择估计量及其参数
- CSS设置下划线与文字间距距离
- .NET调用Java写的WebServices(可能会碰到的问题)
- 用ffmpeg 把mp4文件转为ts文件并生成m3u8列表
- Android_注解与泛型
- Prism框架(二)——Prism应用程序初始化
- 手机端的下拉刷新和上拉加载
- 图解TCP/IP 读后感
- SpringMVC学习记录--Validator验证分析
- git的常用命令
- 什么是java序列化,如何实现java序列化?
- 简单背包问题
- Prism框架(三)——基于模块的应用程序开发