黑马程序员----Java高新技术2
来源:互联网 发布:淘宝开店 虚拟商品 编辑:程序博客网 时间:2024/03/29 06:21
------- android培训、java培训、期待与您交流! ----------
由内省(IntroSpector)引出JavaBean
JavaBean是一个特殊的Java类,方法的名字符合某种特殊的规则。int getXXX(),void setXXX(int age) ,isXXX()等。如果成员变量的第二个字符时小写,则方法应把成员变量第一个字母大写,例如private String n
ame 对应getName()
通过反射机制调用JavaBean中的方法
RefectPoint rf =new RefectPoint(3,5);
String propertyName="x";
PropertyDescriptor pd=new PropetyDescriptor(propetyName,rf.getClass());
Method methodGetX=pd.getReadMethod();
Object returnValue=methodGetX.invoke(rf);
Method methodSetX=pd.getWriteMethod();
methodSetX.invoke(rf,6);
BeanInfo对象把某个类当做JavaBean看待。
BeanInfo beanInfo=Introspector.getBeanInfo(rf.getClass());
PropertyDescriptor[] propertyDescriptors =beanInfo.getPropertyDescriptors();
for(PropertyDescriptor propertyDescriptor:propertyDescriptors){
if(propertyDescriptor.getName().equals(propertyName)){
Method methodGetName=propertyDescriptor.getReadMethod();
Object retVal=methodGetName.invoke(person);
}
}
BenUtils工具包操作JavaBean,apache提供了BeanUtils工具包。
BeanUtils.setProperty(rf,"birthday.time","2222");Java7新特性Map map ={name:"lisi",age:6}
Java1.5新特性注解应用
@Override 子类重写父类的方法,如果不是重写会报编译异常
@Deprecated的作用是对不应该在使用的方法添加注解,当编程人员使用这些方法时,将会在编译时显示提示信息,它与javadoc里的@deprecated标记有相同的功能,准确的说,它还不如javadoc @deprecated,因为它不支持参数。用来标记过时的方法。
@SuppressWarnings,其参数有:
deprecation,使用了过时的类或方法时的警告
unchecked,执行了未检查的转换时的警告
fallthrough,当 Switch 程序块直接通往下一种情况而没有 Break 时的警告
path,在类路径、源文件路径等中有不存在的路径时的警告
serial,当在可序列化的类上缺少serialVersionUID 定义时的警告
finally ,任何 finally 子句不能正常完成时的警告
all,关于以上所有情况的警告
注解应用结构:注解类---》应用了注解类的类---》对“应用了注解类的类”进行反射操作的类
@Retention(RetentionPolicy.RUNTIME),注解保留在何处,分为源代码,运行时,字节码中
@Target(ElementType.METHOD) ,表示注解可以加载什么地方,有包,方法,参数,类,接口,构造方法等
为注解增加属性:
@ItcastAnnotation(color = "Red")
注解类
public @interface ItcastAnnotation {
public String color();
}
如果只有value要知道值的话,可以省略value=,直接赋值。
Java1.5新特性泛型
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。泛型是提供给Java编译器使用的,让编译器当中源程序的非法输入,编译器编译带类型说明的集合时会去掉集合的类型信息,是程序运行效率不受影响。对于参数化的泛型类型,getClass方法的返回值和原始类型是一样的。只要跳过编译器,就可以往某个类型的集合中加入其它类的元素。
参数化类型不考虑类型参数的继承关系。
Vector<String> v =new Vector<Object>() 和Vector<Object> v =new Vector<String>()都是错误的。
在创建数组实例时,数组元素不能使用参数化类型
Vector<Integer> vectorList[] =new Vector<Integer>[10].是错误的。
泛型的?通配符扩展
限定符的上边界:? extends Number 表示类型是Number类型或者是Number的子类。
限定符的下边界: ?super Integer Vector<? super Integer> v =new Vector<Number>();是正确的
泛型集合的综合应用
HashMap<String, Integer> map =new HashMap<String, Integer>();
map.put("lisi", 34);
map.put("masan", 56);
Set<Map.Entry<String,Integer>> set =map.entrySet();//HashMap的entrySet()方法返回的是Set<Map.Entry<K,V>>集合。
for (Entry<String, Integer>entry :set) {
System.out.println(entry.getKey()+"="+entry.getValue());
}
自定义泛型及其应用,自定义数组指定位置元素交换,只有引用类型才能作为泛型方法的参数。
private static <T> void swap(T[] arr,int i,int j){
T temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
通过反射获得泛型实际参数的类型,其实并不是真正的通过创建的泛型的实例来得到的,而是通过泛型变量传参函数取得的泛型变量类型。
public static void applyDate(Vector<Date> v){
}
Method applyDateMethod=AnnotationTest.class.getMethod("applyDate", Vector.class);
Type[] types= applyDateMethod.getGenericParameterTypes();
ParameterizedType parameterizedType=(ParameterizedType) types[0];
System.out.println(parameterizedType.getActualTypeArguments()[0]);//取得泛型传参的类型
System.out.println(parameterizedType.getRawType());//获得参数的原始类型
类加载机制及其委托机制的深入分析
系统默认有三个类加载器:BootStrap(JRE/lib/rt.jar),ExtClassLoader(JRE/lib/ext/*.jar),AppClassLoader(ClassPath下指定的所有的jar包或目录),BootStrap不是Java类,而是嵌套在JVM虚拟机中的,用C/C++写的。自己创建类加载器是是挂载在AppClassLoader上的,类加载器是从上往下进行加载的,如果父类可以加载的话,那么就不会再调用子类进行加载。
------- android培训、java培训、期待与您交流! ----------
- 黑马程序员 - Java 高新技术2
- 黑马程序员----Java高新技术2
- 黑马程序员:Java高新技术2
- 黑马程序员 Java高新技术2
- 黑马程序员--java高新技术
- 黑马程序员-java高新技术
- 黑马程序员----Java高新技术
- 黑马程序员--Java高新技术
- 黑马程序员--java高新技术--
- 黑马程序员--JAVA高新技术
- 黑马程序员:Java高新技术
- 黑马程序员-----java高新技术
- 黑马程序员-Java高新技术
- 黑马程序员 (8)JAVA高新技术 2
- 黑马程序员—Java高新技术2
- 黑马程序员-Java高新技术笔记2
- 黑马程序员---Java高新技术学习笔记-2
- 黑马程序员—java高新技术(2)
- cronExpression表达式解释:
- Oracle中的数据库对象管理
- 人教新课标 小学一年级数学下册 教学视频
- NodeJS 常用模块推荐
- Ehcache二级缓存使用和不使用,iterate()方法查询的sql语句对比
- 黑马程序员----Java高新技术2
- ADO.NET 数据连接查询
- ComboBox1变化ComboBox2也随之变化
- 基于S3C2440的Linux内核移植和yaffs2文件系统制作
- 指定GCC库文件路径
- C# 加密算法
- 如何下载土豆,优酷,人民网等视频
- 人教版新课程 小学二年级语文上册 教学视频
- Oracle中 HWM与数据库性能的探讨