首页
3D照片墙
统计
留言
Search
1
1.OAuth 的简单理解
115 阅读
2
多个拦截器的执行顺序
105 阅读
3
基于Annotation方式的声明式事务
102 阅读
4
6.设计模式汇总
101 阅读
5
Unity 依赖注入
98 阅读
Java
JDBC
Spring
Spring MVC
SpringBoot
SpringCloud
MybatisPlus
Mybatis
Maven
SpringSecurity
JVM
java注解与反射
Java JUC并发编程
SSM
.NET
IdentityServer4
EF
.Net Core
AbpVNext + DDD
.NET MVC Api
前端
Jquery&JavaScript
uniapp
VUE
Echars
Vue底层原理
Python
Django
软考笔记
软件设计师
1.计算机组成与体系结构
10.面向对象技术
11.UML类图建模
12.面向对象程序设计
13.数据结构
14.算法基础
16.知识产权标准化
17.程序设计语言
2.操作系统
3.数据库
4.数据库设计
5.计算机网络
6.信息安全
7.系统开发基础
8.项目管理
9.数据流图
架构设计
CQRS架构
DDD架构
数据库技术
SQL锁
SqlServer
Oracle 主从备份
Oracle RAC集群
Mysql
云原生/容器技术
kubernetes
Docker
数据结构与算法
常用中间件
Redis
RabbitMQ 消息队列
ElasticSearch
其他
PHP
OAuth 2.0
WebSocket
ArkTs Harmony 开发
运维
Search
标签搜索
排序算法
vue
算法
遍历
docker
线性
数组
dom
synchronized
数据库
xml语言
log4j
bigint
静态函数
静态方法
哈夫曼树
const
冒泡排序
商标设计
命令模式
Bi8bo
累计撰写
304
篇文章
累计收到
6
条评论
首页
栏目
Java
JDBC
Spring
Spring MVC
SpringBoot
SpringCloud
MybatisPlus
Mybatis
Maven
SpringSecurity
JVM
java注解与反射
Java JUC并发编程
SSM
.NET
IdentityServer4
EF
.Net Core
AbpVNext + DDD
.NET MVC Api
前端
Jquery&JavaScript
uniapp
VUE
Echars
Vue底层原理
Python
Django
软考笔记
软件设计师
1.计算机组成与体系结构
10.面向对象技术
11.UML类图建模
12.面向对象程序设计
13.数据结构
14.算法基础
16.知识产权标准化
17.程序设计语言
2.操作系统
3.数据库
4.数据库设计
5.计算机网络
6.信息安全
7.系统开发基础
8.项目管理
9.数据流图
架构设计
CQRS架构
DDD架构
数据库技术
SQL锁
SqlServer
Oracle 主从备份
Oracle RAC集群
Mysql
云原生/容器技术
kubernetes
Docker
数据结构与算法
常用中间件
Redis
RabbitMQ 消息队列
ElasticSearch
其他
PHP
OAuth 2.0
WebSocket
ArkTs Harmony 开发
运维
页面
3D照片墙
统计
留言
搜索到
7
篇与
的结果
2024-09-28
2.2 Class 反射常用的方法
Class.forName();动态加载类。 newInstance() :根据对象的class新建一个对象 getSuperclass() 获取继承的父类 getInterfaces() 获取继承的接口 getDeclaredFields() 获取字段名字 getDeclaredMethods();获取当前类的所有方法。 getConstructors() :获得所有的构造函数。 getModifiers() : 反射中获得修饰符 getPackage() :反射中获得package getField(String name):反射中获得域成员。 getFields() :获得域数组成员。 isAnnotation() :判断是否为注解类型。 isPrimitive() :判断是否为基本类型。 isArray() :判断是否为数组类型。 isEnum() :判断是否为枚举类型。 getClassLoader() :获得类的类加载器 getMethods() 获得公共的方法。
2024年09月28日
97 阅读
0 评论
53 点赞
2023-03-25
2.1 反射机制 Reflection(反射)
Java反射机制Reflection Reflection(反射)是Java被视为准动态语言的关键,反射机制允许程序在执行期间借助ReflectionAPI去的任何类的内部信息(无视private等),并能够直接操作任意对象的内部属性及方法 Class c = Class.forName("java.lang.String"); 加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射 正常方式:引入需要的“包类”名称—>通过new实例化—>取得实例对象 反射方式:实例化对象—>getClass()方法—>得到完整的“包类”名称 Java反射(Reflection)框架主要提供以下功能: 在运行时判断任意一个对象所属的类; 在运行时构造任意一个类的对象; 在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法); 在运行时调用任意一个对象的方法 Java反射(Reflection)的主要用途 工厂模式:Factory类中用反射的话,添加了一个新的类之后,就不需要再修改工厂类Factory了 数据库JDBC中通过Class.forName(Driver).来获得数据库连接驱动 分析类文件:毕竟能得到类中的方法等等 访问一些不能访问的变量或属性:破解别人代码 Java反射(Reflection)的基本运用 获取Class有一下三种方法: 使用Class类的forName静态方法 //在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), //这通过java.lang.Class类的静态方法forName(String className)实现。 //例如: try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ; }catch(ClassNotFoundException e){ //System.out.println("找不到驱动程序类 ,加载驱动失败!"); e.printStackTrace() ; } //成功加载后,会将Driver类的实例注册到DriverManager类中。 直接获取某一个对象的class Class<?> klass = int.class; Class<?> classInt = Integer.TYPE; 调用某个对象的getClass()方法 public class Test{ public static void main(String[] args) { Demo demo=new Demo(); System.out.println(demo.getClass().getName()); } }
2023年03月25日
40 阅读
0 评论
87 点赞
2023-03-01
1.3自定义一个注解
@interface Annotation{ } 定义一个注解 @Annotation,一个注解是一个类 package 注解; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; public class myannotation { } //多个参数的注解 @Target({ElementType.TYPE,ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @interface MyAnnotation{ //参数名不是一个方法 //注解的参数: 参数类型+参数名() String name(); //参数的默认值设置 default int age() default 0; String[] school() default {"",""}; } //一个参数的注解 注解如果只有一个参数 ,参数名建议设为value, //这样注解填参数就可以省略参数名 @Target({ElementType.TYPE,ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @interface MyAnnotation2{ //注解如果只有一个参数 ,参数名建议设为value,这样注解填参数就可以省略参数名 String value(); }
2023年03月01日
32 阅读
0 评论
28 点赞
2023-02-08
2.3 反射演示Demo
获取一个class对象的几种方式 第一种方式:通过类本身来获得对象 Class classname = this .getClass(); 第二种方式:通过子类的实例获取父类对象 Sub sub = new Sub(); Class clazz = sub.getClass(); Class parentClass = clazz.getSuperclass(); 第三种方式:通过类名(类的全路径)加.class获取对象 Class ForClass = **.**.ClassName.class;(类在包中的路径加.class) 第四种方式:通过类名的字符串获取对象 Class ForName = Class.forName( "**.**.ClassName" ); public class fanse { public static void main(String[] args) throws ClassNotFoundException { // 通过反射获取类的Class对象 //获取一个实体类对象 Class clazz = Class.forName("fanshe.User"); System.out.println(clazz); //一个类在内存中只有一个class对象! //一个类加载后,类的整个结构都会被封装在class对象中 } }
2023年02月08日
68 阅读
0 评论
1 点赞
2022-07-25
1.1 三种标准注解
@Deprecated 已过期,表示方法是不被建议使用的 @Override 重写,标识覆盖它的父类的方法 @SuppressWarnings 压制警告,抑制警告 解释: Deprecated 注解 可以修饰类、方法、变量,在java源码中被@Deprecated修饰的类、方法、变量等表示不建议使用的,可能会出现错误的,可能以后会被删除的类、方法等,如果现在使用,则在以后使用了这些类、方法的程序在更新新的JDK、jar包等就会出错,不再提供支持。 个人程序中的类、方法、变量用@Deprecated修饰同样是不希望自己和别人在以后的时间再次使用此类、方法。当编译器编译时遇到了使用@Deprecated修饰的类、方法、变量时会提示相应的警告信息。 Override 注解 指明被注解的方法需要覆写超类中的方法,如果某个方法使用了该注解,却没有覆写超类中的方法(如大小写写错了,或者参数错了,或者是子类自己定义的方法),编译器就会生成一个错误。 在子类中重写父类或接口的方法,@Overide并不是必须的。但是还是建议使用这个注解,在某些情况下,假设你修改了父类的方法的名字,那么之前重写的子类方法将不再属于重写,如果没有@Overide,你将不会察觉到这个子类的方法。有了这个注解修饰,编译器则会提示你这些信息。 Suppresswarnings 注解 @SuppressWarnings用来抑制编译器生成警告信息,可以修饰的元素为类,方法,方法参数,属性,局部变量。它可以达到抑制编译器编译时产生警告的目的,使用@SuppressWarnings注解,采用就近原则,比如一个方法出现警告,尽量使用@SuppressWarnings注解这个方法,而不是注解方法所在的类。所属范围越小越好,因为范围大了,不利于发现该类下其他方法的警告信息。 但是很不建议使用@SuppressWarnings注解,使用此注解,开发人员看不到编译时编译器提示的相应的警告,不能选择更好、更新的类、方法或者不能编写更规范的编码。同时后期更新JDK、jar包等源码时,使用@SuppressWarnings注解的代码可能受新的JDK、jar包代码的支持,出现错误,仍然需要修改。
2022年07月25日
77 阅读
0 评论
86 点赞
1
2