java基础加强

/**
Juunit单元测试
反射
注解
测试:黑盒测试:不需要写代码 给输入值 看程序是否能够输出期望的值
2.白盒测试:需要些代码的 灌注程序具体的执行流程
使用步骤:
1.定义一个测试类(测试用力),建议:1.测试类名:被测试的类名+test
包名xxx.xxx.xx.test    
定义的方法:可以独立运行 建议:方法名:test测试的方法名 testadd();
返回值:void
参数列表:空参
3.给方法加@Test
4.导入Junit依赖
判定结果:红色代表失败 绿色代表成功
5.断言操作:我断言一个结果 与结果进行比较
Assert类中的某个方法(你期望的值,真实的值)


初始化方法:
用于自愿申请 所有测试方法在执行之前都会限制性该方法
@Before
public void init(){
}//释放资源方法 在所有测试方法执行完后,都会自动执行该方法
@After
public void close(){
}
@Test
public void testSub(){
    需要测试的语句
}

反射:框架设计的灵魂
框架:半成品的软件
反射:将类的各个组成部分封装为其他对象,这就是反射机制
好处:可以在程序运行过程中 操作这些对象   可以解耦 提高程序的可拓展性

获取class对象的方式:
1.Class.forName("全类名"):将字节码文件夹在到内存 返回class对象
->多用于配置文件,将类名定义在配置文件中 读取文件 加载类
2.类名.class:通过类名的属性class获取->多用于参数的传递
3.对象.getClass:getclass()方法在object类中定义着->多用于对象的获取字节码的方式
结论:无论通过哪种方式获取的Class对象是同一个
Class对象功能:
获取功能:1.获取成员变量们
Field[] getFileds  返回包含一个数组 Field对象反射由此表示的类或接口的所有可访问的公共字段 类对象。
获取所有public修饰的所有变量   
 
field getFileds(String name)返回一个 Field对象,它反映此表示的类或接口的指定公共成员字段 类对象。 


Field[] getDeclaredFields()  返回的数组 Field对象反映此表示的类或接口声明的所有字段 类对象。 
Field getDeclaredField(String name)      返回一个 Field对象,它反映此表示的类或接口的指定已声明字段 类对象。 

->>>>获取所有的成员变量 不仅仅是public,但是在访问不是public的成员变量时,忽略访问权限修饰符的安全检查   d.setAccessible(Ture)
写上这么一行代码就可以了
2.获取构造方法们
Constructor<T> getConstructor(类<?>... parameterTypes) ->返回一个 Constructor对象,该对象反映 Constructor对象表示的类的指定的公共 类函数。  
Constructor<?>[] getConstructors() ->返回包含一个数组 Constructor对象反射由此表示的类的所有公共构造 类对象。  
Constructor<T> getDeclaredConstructor(类<?>... parameterTypes) ->返回一个 Constructor对象,该对象反映 Constructor对象表示的类或接口的指定 类函数。  
Constructor<?>[] getDeclaredConstructors() ->返回一个反映 Constructor对象表示的类声明的所有 Constructor对象的数组 类  
创建对象 T newInstance(Object initargs):如果使用空参数构造方法创建独享,操作可以简化:class对象的newInstance方法

3.获取成员方法们
方法 getMethod(String name, 类<?>... parameterTypes) ->返回一个 方法对象,它反映此表示的类或接口的指定公共成员方法 类对象。  
方法[] getMethods() ->返回包含一个数组 方法对象反射由此表示的类或接口的所有公共方法 类对象,包括那些由类或接口和那些从超类和超接口继承的声明。  
方法 getDeclaredMethod(String name, 类<?>... parameterTypes) ->返回一个 方法对象,它反映此表示的类或接口的指定声明的方法 类对象。  
方法[] getDeclaredMethods() ->返回包含一个数组 方法对象反射的类或接口的所有声明的方法,通过此表示 类对象,包括公共,保护,默认(包)访问和私有方法,但不包括继承的方法。  
Method:方法对象
Objecr invoke(Object obj,Object ..args)
获取方法名称 String grtNmae:获取方法名

4.获取类名
String getName() 
返回由 类对象表示的实体(类,接口,数组类,原始类型或空白)的名称,作为 String 。  

Field的两个方法
1.设置值void set(Object obj, Object value)    ->将指定对象参数上的此 Field对象表示的字段设置为指定的新值。  
2.获取值Object get(Object obj) 返回该所表示的字段的值 Field ,指定的对象上。  
注解:说明程序 给计算机看的  JDK1.5之后的新特性 是为了说明程序的
使用注解:@注解名称
作用的分类:1.编写代码
2.代码分析
3.编译检查
JDK中预定的一些注解:
@Override:检测被该注解标注的方法是否是继承自父类(接口)的
@Deprecated:该注解标注的内容,表示已过时
@Suppresswarnings:压制警告
@Suppresswarnings(all):压制全部警告

自定义注解:格式:
元注解:public @interface 注解名称{
}

注解的本质上就是一个接口 该接口默认继承Annotation接口

注解的属性--接口中可以定义的内容----->接口中定义的抽象方法
要求:1.属性的返回值类型->基本数据类型 String  枚举  注解  和以上类型的数组
定义了一个属性,要给属性赋值  
1.赋值的时候定义属性时使用default关键字给属性默认初始化值,则使用注解时可以不对属性赋值
2.如果只有一个属性需要赋值 并且属性的名称为value时,则可以直接定义值
3.数组赋值时,值使用{}抱过 如果数组中只有一个值 则{}省略

元注解:用于描述原注解的注解
@Target:描述注解能够作用的位置
EkementType取值:
TYPE:可以作用于类上
METHOD:可以作用于方法上
FIELD:可以作用于成员变量上
@Retantion:描述注解被保留的阶段
SOURVE 表示被描述的注解不会保留到class字节码文件中也不会被JVM读取到
CLASS:表示被描述的注解会保留到class字节码文件中并不会被JVM读取到
RUNTIME:一般使用这个 表示被描述的注解会保留到class字节码文件中并被JVM读取到
@Documented:描述注解是否被抽去到API文档中
@Inherited:描述注解是否被子类继承

在程序中国使用(解析)注解:获取注解中定义的属性值

1.获取注解顶的位置对象(Class,Method,Field)
2.获取指定的注解:getAnnotation(Class)
其实就是在内存中生成了一个该注解接口的子类实现对象
3 调用注解中的抽象方法获取配置的属性值
小结:以后大多数的时候 我们会使用注解  而不是自定义注解
2.注解给谁用1.编译器2.给解器程序使用
3.
注解不是程序的一部分 可以理解为注解就是一个标签


 


*/
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值