java基础12
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java基础12,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5321字,纯文字阅读大概需要8分钟。
内容图文
![java基础12](/upload/InfoBanner/zyjiaocheng/589/97c8b1b8916c4b07bf851a6d924823e6.jpg)
枚举类Enum
1.基本
static final:定义一系列常量时,一系列静态对象
enum Season {
//直接定义一系列对象
SPRING("",""),
SUMMER("",""),
AUTUMN("",""),
WINTER("","");
//字段
private final String seasonName;
private final String seasonDesc;
//构造方法私有
private Season(String name,String desc){
this.seasonName = name;
this.seasonDesc = desc;
}
//其他方法
}
常用方法 | 说明 |
---|---|
values() | 返回枚举对象数组 |
valueOf(String str) | 字符串转化为对应的枚举对象 |
toString() | 返回当前枚举对象常量的名字 |
2.实现接口
注解Annotation
能够编译的特殊标记,jdk5.0新增
框架= 注解+反射+设计模式
1.用例
1.1 生成文档相关注解:
@author 标明作者
@version 版本
@see 参考转向
@since 从哪个版本开始增加
@param 参数说明
@return 返回值说明
@exception 说明异常 throws时
1.2 编译时格式检查:(内置注解)
@override 表示方法重写,只能修饰方法
@Deprecated 修饰方法、属性、类,表示不鼓励使用
@SuppressWarnings 抑制警告
1.3 跟踪代码依赖性替代配置文件:
servlet
1.4 spring事务管理:
1.5自定义注解
-
注解的本质就是一个Annotation接口
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation {
//注解参数: 参数类型 + 参数名();default
String name() default "";
int age() default 0;
int id() default -1;
}
2.元注解
注解其他注解的注解 meta-annotation
2.1 @Retention
Retention使用枚举RetentionPolicy来表示注解保留时期:
源码(编译期),字节码(类加载)或者运行期(JVM中运行)
-
@Retention(RetentionPolicy.SOURCE),注解仅存于源码
-
@Retention(RetentionPolicy.CLASS), 默认保留,注解在class字节码文件中存在,运行时无法获得
-
@Retention(RetentionPolicy.RUNTIME), 注解在class字节码文件中存在,在运行时通过反射获取
自定义注解中使用 @Retention(RetentionPolicy.RUNTIME)
2.2 @Target
描述注解的使用范围
-
@Target(ElementType.TYPE) 接口、类、枚举、注解
-
@Target(ElementType.FIELD) 属性字段、枚举常量
-
@Target(ElementType.METHOD) 方法
-
@Target(ElementType.PARAMETER) 方法参数
-
@Target(ElementType.CONSTRUCTOR) 构造
-
@Target(ElementType.LOCAL_VARIABLE) 局部变量
-
@Target(ElementType.ANNOTATION_TYPE) 注解
-
@Target(ElementType.PACKAGE) 包
-
@Target(ElementType.TYPE_PARAMETER) 泛型方法、泛型类、泛型接口 (jdk1.8加入)
-
@Target(ElementType.TYPE_USE) 任意类型除了 class (jdk1.8加入)
2.3 @Document
说明该注解被包含在javadoc中
2.4 @Inherited
说明子类可以继承父类中的该注解
@Inherited注解了的注解修饰了一个父类,如果他的子类没有被其他注解修饰,则它的子类也继承了父类的注解。
2.5@Repeatable
说明被这个元注解修饰的注解可以同时作用同一个对象多次,而每次作用注解可以表示不同的含义。
3.注解属性
注解中的变量都是成员变量(属性),并且注解中是没有方法的,只有成员变量,变量名就是使用注解括号中对应的参数名,变量返回值注解括号中对应参数类型。
-
注解属性类型可以有以下列出的类型
-
1.基本数据类型
-
2.String
-
3.枚举类型
-
4.注解类型
-
5.Class类型
-
6.以上类型的一维数组类型
反射Reflection
1.概念
动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制
类名 | 用途 |
---|---|
Class类 | 代表类的实体,在运行的Java应用程序中表示类和接口 |
Field类 | 代表类的成员变量(成员变量也称为类的属性) |
Method类 | 代表类的方法 |
Constructor类 | 代表类的构造方法 |
1.1 Class类
Class类的实例用于记录对象的类描述信息
1.获取Class对象
-
通过类名直接获取:类名.class 返回Class对象,再创建实例
-
通过对象获取:对象名.getClass() Class<? extends 类名>
-
通过全类名获取:Class.forName(全类名) 返回Class<?>
方法名 | 功能说明 |
---|---|
static Class forName(String name) | 返回指定类名 name 的 Class 对象 |
Object newInstance() | 调用缺省构造函数,返回该Class对象的一个实例 |
Object newInstance(Object []args) | 调用当前格式构造函数,返回该Class对象的一个实例 |
getName() | 返回此Class对象所表示的实体(类、接口、数组类、基本类型或void)名称 |
Class getSuperClass() | 返回当前Class对象的父类的Class对象 |
Class [] getInterfaces() | 获取当前Class对象的接口 |
ClassLoader getClassLoader() | 返回该类的类加载器 |
Class getSuperclass() | 返回表示此Class所表示的实体的超类的Class |
2.获取类中属性
方法名 | 功能说明 |
---|---|
getField(String name) | 获得某个公有的属性对象 |
getFields() | 获得所有公有的属性对象 |
getDeclaredField(String name) | 获得某个属性对象(包含私有) |
getDeclaredFields() | 获得所有属性对象(包含私有) |
返回的是 Field或数组
Field 对象可以使用getxxx,setxxx(并非类里的方法)
操作私有属性时:先setAccessible(true)
获取字段名,和字段的值:getName();get(对象);
3.获取类中构造器
方法名 | 功能说明 |
---|---|
getConstructor(Class...<?> parameterTypes) | 获得该类中与参数类型匹配的公有构造方法 |
getConstructors() | 获得该类的所有公有构造方法 |
getDeclaredConstructor(Class...<?> parameterTypes) | 获得该类中与参数类型匹配的构造方法 |
getDeclaredConstructors() | 获得该类所有构造方法 |
返回Constructor<?>或数组
4.获取类中方法
方法名 | 功能说明 |
---|---|
getMethod(String name, Class...<?> parameterTypes) | 获得该类某个公有的方法 |
getMethods() | 获得该类所有公有的方法 |
getDeclaredMethod(String name, Class...<?> parameterTypes) | 获得该类某个方法(包含私有) |
getDeclaredMethods() | 获得该类所有方法(包含私有) |
返回Method或数组
-
先获取Method对象 xx
-
再调用xx.invoke(实例名,参数)来使用此方法,参数为此方法的参数
1.2 Field类
Field代表类的成员变量(成员变量也称为类的属性)
方法名 | 功能说明 |
---|---|
equals(Object obj) | 属性与obj相等则返回true |
get(Object obj) | 获得obj中对应的属性值 |
set(Object obj, Object value) | 设置obj中对应属性值 |
1.3 Method类
Method代表类的方法
方法名 | 功能说明 |
---|---|
invoke(Object obj, Object... args) | 传递object对象及参数调用该对象对应的方法 |
1.4 Construtor类
Construtor代表类的构造方法
方法名 | 功能说明 |
---|---|
newInstance(Object... initargs) | 根据传递的参数创建类的对象 |
2.动态代理
使用代理替代原对象,对于原对象的调用都通过代理
一个代理类完成全部代理功能
内容总结
以上是互联网集市为您收集整理的java基础12全部内容,希望文章能够帮你解决java基础12所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。