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

原创 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高新_注解和泛型

------- android培训、java培训、期待与您交流! ----------    java_高新_注解和泛型 Annotation(注解)是JDK5.0及以后版本引入的。它可...

黑马程序员----java基础加强 注解与泛型

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

黑马程序员-----看视频后注解总结和泛型总结

---------------------- android培训、java培训、期待与您交流! ---------------------- 一:JDK1.5注解 1:什么是注解 注解是一个类。...

黑马程序员 java高新技术<三>--java5的注解、java5的泛型

-------android培训、java培训、java学习型技术博客、期待与您交流! ----------                                          ...

黑马程序员——内省,JavaBean,注解,泛型,类加载器,代理

------- android培训、java培训、期待与您交流! ----------------- android培训、java培训、期待与您交流! ----------...
  • huamoai
  • huamoai
  • 2014年05月20日 11:24
  • 418

黑马程序员_Java高新技术(内省、注解、泛型、类加载器、代理)

Java高新技术(内省、Beanutils包、注解、泛型、类加载器、代理) 内省—>了解JavaBean JavaBean是一种特殊的Java类,主要用于传递数据信息,这种java类中的方法主要用...

黑马程序员之注解与泛型

---------------------- android培训、java培训、期待与您交流! ----------------------1.5新特性:注解 什么是注解:注解就是告诉编译器或开发工...

黑马程序员_java基础加强_jak1.5新特性(3注解与)泛型概念

---------------------- android培训、java培训、期待与您交流! ---------------------- 一:注解 1:注解 注解就是告诉编译器在变异那些...

黑马程序员--Java注解以及泛型

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

黑马程序员面试题高新技术之(JavaBean复杂操作,注解Annotation,泛型应用Generic)

--------- android培训、java培训、期待与您交流!--------- 一.JavaBean 1.内省:英文是Intorspector ,它主要用于对JavaBean进行操...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员--学习--注解和泛型
举报原因:
原因补充:

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