传智博客课堂学习笔记3.27

来源:互联网 发布:淘宝上的电脑是真货吗 编辑:程序博客网 时间:2024/05/03 00:29

传智博客课堂学习笔记3.27

复习
.可变参数
.增强for循环
.静态引用
.装箱、拆箱
.内省 java.beans
.枚举Enum
.反射(构造对象【默认构造器和指定构造器,如果构造器属性为private,通过getDeclaredConstructor,setAccessiable(true)】,
 读写Field,获取属性【getter和setter方法、属性类型】,获取和调用方法【如果方法是static,调用时method.invoke(null,args)】
 .读取注解)


XML用作配置应用
.注解用作配置
1.通过反射技术读取注解
2.通过反射技术读写field


import java.lang.annotation。RetentionPolicy;
RetentionPolicy.RUNTIME:指定该注解保留在源代码/编译过后的class并随着类被装载到JAVA虚拟机内
RetentionPolicy.CLASS:指定该注解只保留在源代码/编译过后的class中
RetentionPolicy.SOURCE:指定该注解只保留在源代码上


.泛型generic
所有的泛型都必须实现ParameterizedType接口

方法上、类上
泛型的继承
泛型的反射

 


public Class<? super T>getXxxx()
{

}

public class
Class<? super T>返回的是class对象,class的类型必须是T的父类

 

public void getXxx(Class<?> sss)
{

}

 


.代理,ClassLoader,BeanUtil(可以实现类型转换和对属性进行操作)
ClassLoader负责从指定路径加载字节码到java虚拟机
类装载器
Bootstrap类装载器
ExtClassLoader
AppClassLoader

类装载器的委托模式

Field:
getModifiers
public int getModifiers()Returns the Java language modifiers for the field represented by this Field object, as an integer. The Modifier class should be used to decode the modifiers.


class.forName():get class for name

compile time 和 run time

the name of the class object for a one-dimensional int array is [I

System.out.println(String[].class.getName());

Class cls = Class.forName("[Ljava.lang.String;");

X.class.newInstance() is the same as new X().


静态代理
动态代理
通过JDK代理技术创建代理技术时,目标对象必须具有接口(创建出来的代理需要实现这些接口)

public class Proxy7 implements PersonService{
 private InvocationHandler h = new MehodInvokeBean(target);
 
 public String sayHello(String name){
  h.invoke(this,Method["sayHello"],name);
 }
}

 

要求:
可变参数
增强for循环
装箱/拆箱
内省(读取属性)
枚举(简单的定义)
注解(简单的定义)
泛型(简单的定义)
反射(读写Field,构造对象,获取和调用方法)

 

目标:
反射获得属性

 


今天讲课内容较多,并且比较深入复杂。需要一定的时间消化整理。幸亏课程安排比较合理,每两三天即有一天休息。方便了学习。
黎老师讲课比较深入,会涉及到一些高级技术。显然是技术型高手~

 

 

 

 

 

原创粉丝点击