Java中的内部类和反射
发布日期:2021-10-02 09:00:29
浏览次数:6
分类:技术文章
本文共 1925 字,大约阅读时间需要 6 分钟。
Java中的内部类和反射是Java中学习最难的一部分,可能对于初学着来说很难第一时间内就全部掌握,先来看一下他们的具体定义吧。 内部类 1) 从 JDK 1.1 以后,把具有包含关系的类应用到语法上的包含的一种实现 2) 包括了静态内部类、成员内部类、局部内部类、匿名内部类 3) 静态内部类和成员内部类定义于类内部,局部内部类和匿名内部类定义在方法内部
静态内部类:
a.定义在类的内部 b.相当于静态成员 Out t = new Out(); t.member/member() t.this.imember OutStatic os=new Out.Static() os.inmember/() c.添加static修饰符 d.编译后产生的class的命名规则如下, 外部类名$内部类名.class成员内部类
a.定义在类的内部 b.相当于类的成员 1.直接访问外部类的成员 2.在外部类创建成员内部类实例this.new inner() 3.外部类的外部创建成员内部类 (new outter()).new inner() out_in_class.imemberc.编译后产生的class的命名规则同静态内部类
局部内部类
a.定义在方法的内部 b.相当于方法的局部变量 1.实例化方法 new inner() 2.由于其是局部内部类,不能在方法外访问,不能加访问 权限修饰符 c.编译后产生的class的命名规则为 外部类名$序号内部类名.class Week2$1DayIterator.class匿名内部类
a.定义在方法内部 b.匿名内部类只能实现一个接口或者继承一个抽象类 c.匿名内部类对接口和抽象类必须全实现 d.匿名内部类中不可以显式定义构造器 非静态初始化代码块 { ... } 实现成员变量初始化功能f.匿名内部类产生的class的命名规则为
外部类名$序号.class Week2$1.class 写法: new 接口/抽象类名称(){...}10.反射
通过一种机制获得类的具体的内容的过程成为反射。 这种机制我们成为反射机制。 1.创建一个类 new ...(); classname constructor field method ... Class {...... .... ... ....} 2.创建一个类的对象的同时也对这个类创建一个Class对象。 使用Class对象保存类的信息。 3.对一个类通过反射机制可以把它的信息反射到Class对象中,获取该类的信息。 4.反射机制的作用: a. 可以在运用类之前,把封装在类中信息反射得到; b. 在不知道一个类的名字的时候,不运行也可以创建类的 实例 c. 可以通过反射突破封装特性获取/设置属性 d. 可以通过反射在不运行类的情况下,可以执行方法 e. 可以不运行的情况下,创建数组,设置长度,调整元素5.所有的反射机制的功能 在 java.lang.reflect包下
在使用Java反射方面是内容是需要用到的Java架包和一些API API包括: java.lang.Class java.lang.reflect.Field java.lang.reflect.Method java.lang.reflect.Array java.lang.reflect.Constructor 好了,今天就先看到这里了。Class<?> classIntance = Class.forName(this.getClass() .getCanonicalName() + "$" + className); System.out.println(classIntance.getCanonicalName()); Constructor<?> constructor = classIntance .getDeclaredConstructor(SfsDownLoadCheck.class); constructor.setAccessible(true); Object newInstance = constructor.newInstance(sfsDownLoadCheck); // Invoke the method to download file DownloadStrategies downloadStrategies = (DownloadStrategies) newInstance; int length = downloadStrategies.getContent(filePath).length();
转载地址:https://blog.csdn.net/jiafu1115/article/details/7093281 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月15日 19时46分58秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【C++】勉强能看的线程池详解
2019-04-27
FTP文件管理项目(本地云)项目日报(五)
2019-04-27
FTP文件管理项目(本地云)项目日报(关于不定长包的测试)
2019-04-27
FTP文件管理项目(本地云)项目日报(六)
2019-04-27
FTP文件管理项目(本地云)项目日报(七)
2021-06-30
FTP文件管理项目(本地云)项目日报(八)
2021-06-30
【Linux】血泪教训 -- 动态链接库配置方法
2021-06-30
FTP文件管理项目(本地云)项目日报(九)
2021-06-30
以练代学设计模式 -- FTP文件管理项目
2021-06-30
FTP文件管理项目(本地云)项目日报(十)
2021-06-30
学以致用设计模式 之 “组合模式”
2021-06-30
我用过的设计模式(7)--享元模式
2021-06-30
MySQL数据库从入门到实战应用(学习笔记一)
2021-06-30
MySQL数据库从入门到实战应用(学习笔记二)
2021-06-30
种树:二叉树、二叉搜索树、AVL树、红黑树、哈夫曼树、B树、树与森林
2021-06-30
【C++】攻克哈希表(unordered_map)
2019-04-27
转:【答学员问】- 该如何根据岗位学习相关技能
2019-04-27
转:【答学员问】有什么经验教训,是你在面试很多次之后才知道的?
2019-04-27
消息队列:解耦、异步、削峰,现有MQ对比以及新手入门该如何选择MQ?
2019-04-27
【奇技淫巧】-- 三角形最小路径和
2019-04-27