黑马程序员--学习--注解和泛型

原创 2012年03月24日 16:27:44

---------------------- android培训java培训、期待与您交流! ----------------------

注解:

相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,javac编译器,开发工具
和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。
标记加在包,类,字段,方法,方法的参数以及局部变量上
增加注解属性
@Target({ElementType.METHOD,ElementType.TYPE})


泛型
参数化类型与原始类型的兼容性
参数化类型可以引用一个原始类型的对象,编译报告警告
Collection<String> c = new Vector();
原始类型可以引用一个参数化类型的对象,编译报告警告
Collection c = new Vector<String>();

参数化类型不考虑类型参数的继承关系
Vector<String> v = new Vector<Object>();//错误

Vector<Object> v = new Vector<String>();//错误

?通配符定义的变量主要用作引用,可以调用与参数化无关的方法,不能调用与参数化有关的方法

泛型实例
HashMap<String,Integer> maps = new HashMap<String,Integer>();
maps.put("dd",20);
maps.put("ddf",23);
Set<Map.Entry<String,Integer>> entrySet = maps.entrySet();
for(Map.Entry<String,Integer> entry: entrySet){
 System.out.println(entry.getKey()+":"+entry.getValue());
}

只有引用类型才能作为泛型的参数  //swap(new int[3],3,5)会报错

类型参数的类型推断
根据调用泛型方法时实际传递的参数类型或返回值的类型来推断,具体规则如下
1.当某个类型变量只在整个参数列表中的所有参数和返回值中的一处别应用了, 那么根据调用方法时该处
的实际应用类型来确定
swap(new String[3],3,4)----statice<E> void swap(E[]a,int i,int j)
2.当某个类型变量在整个参数列表中的所有参数和返回值中的多处被应用如果调用方法时这多处的实际应用类型
对应同一种类型来确定
add(3,5)---static<T> T add<T a,T b>
3.当某个类型变量在整个参数列表中的所有参数和返回值中的多处别应用了,如果调用方法时这多处的实际
应用类型对应到了不同的类型,且没有使用返回值,这时候取多个参数中的最大交集类型
fill(new Integer[3],3.4f)----static <T> void fill(T[]a,T v)
4.当某个类型变量在整个参数列表中的所有参数和返回值中的多处别应用了,如果调用方法时这多处的实际
应用类型对应到了不同的类型,且使用返回值,这时候优先考虑返回值的类型
int x = (3,3.5f) ----static <T> add(T a,T b)
5.参数类型的类型推断具有传递性,下面第一种情况推断实际参数类型为Object,编译没有问题,而第二种情况则
根据参数化的Vector类实例将类型变量直接确定为String类型,编译将出现问题
copy(new Integer[5],new String[5])---------static<T> void copy(T[] a,T[] b);
copy(new Vector<String>(),new Integer[5] )----static<T> void <T> copy(Collection<T> a, T[] b);

 

/*

public class{
 public static void  main(String[] args){  
 Method applyMethod = GnericText.class.getMethod("applyVector",Vector.class);
 Type[] types = applyMethod.getGenericParameterTypes();     
 ParameterizedType pType = (ParameterizedType)types[0];                                        ????
 System.out.println(pType.geActualTypeArguments()[0]);

 public static void applyVector(Vector<Date> v1){


 }
 }
}

copy(new Vector<String>(),new Vector<Date>())                                         ?????

*/

 

 

 

---------------------- android培训java培训、期待与您交流! ----------------------

注解和泛型

Java的注解annotation   java提供的基本注解:     总结:java1.5新特性枚举和注解 java在lang包下提供三个注解:...
  • jianjinshuno1
  • jianjinshuno1
  • 2014年12月30日 10:58
  • 485

第十六节 泛型与注解

本节主要内容 泛型(Generic Type)简介注解(Annotation)简介注解常用场景 1. 泛型(Generic Type)简介 泛型用于指定方法或类可以接受任意类型参数,...
  • houjun1988325
  • houjun1988325
  • 2017年01月23日 16:02
  • 133

黑马程序员:Java学习路线大揭秘连载2-JavaWeb篇!

编程语言Java,已经21岁了。从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的。Java应用的广泛已...
  • itcast_cn
  • itcast_cn
  • 2016年10月18日 17:44
  • 1471

java机制学习——反射,注解,代理,泛型

java机制——反射,注解,代理,泛型
  • hdkjdhdj
  • hdkjdhdj
  • 2016年11月08日 15:17
  • 670

Java 9:装B之前你必须要会的——泛型,注解,反射

1 泛型1.1 基本概念泛型提供了编译期的类型检查,但问题远非这么简单///原生态类型 List list1 = new ArrayList(); ///规避的类型检查 List list1 = ...
  • cowthan
  • cowthan
  • 2016年12月11日 20:53
  • 1052

黑马程序员--Java基础加强--06.【泛型通配符限定】【个人总结】

泛型通配符限定 总结 ----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ 本篇日志着重总结extends和super在泛型限...
  • u011406124
  • u011406124
  • 2013年07月30日 09:55
  • 1177

黑马程序员_泛型总结

---------------------------------------------------android培训、java培训、期待与您交流!---- --------------------...
  • heqinglin8
  • heqinglin8
  • 2014年02月22日 22:21
  • 553

黑马程序员--Java基础之二叉树数据结构和泛型

今天是java学习第15天,学习了集合内容的TreeSet数据和泛型。   import java.util.*; /* Set:无序,不可以重复元素  |--HashSet:数据结构是...
  • SpiderManZZH
  • SpiderManZZH
  • 2014年11月27日 00:29
  • 594

黑马程序员:各学科学习路线图,简直是厉害了word哥

1999年的一部电影《一个都不能少》火了一句话“一个都不能少”!2016年,黑马程序员走心出品,全学科学习路线图。今天,我们也做到了,一个都不能少!差一个都那不叫完美。(此处无图,请自觉脑补)今天我们...
  • itcast_cn
  • itcast_cn
  • 2016年11月10日 13:57
  • 1698

黑马程序员---高新-注解和泛型

--------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------   java_高...
  • u011045065
  • u011045065
  • 2013年07月08日 01:34
  • 576
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员--学习--注解和泛型
举报原因:
原因补充:

(最多只允许输入30个字)