前言:
今天咱们对“java目录下存放的是什么文件”大致比较关怀,看官们都想要知道一些“java目录下存放的是什么文件”的相关资讯。那么小编在网络上收集了一些关于“java目录下存放的是什么文件””的相关知识,希望姐妹们能喜欢,看官们快快来了解一下吧!序
欢迎来到全网最完整的Java入门系列教程!!! 本教程将包含基础知识、进阶知识、常用框架等,循序渐进地分享Java中必须掌握的知识和技术。跟着老K的教程每天学习一点,你会发现入门Java没有想象中那么难。
本期我们要分享的是java反射机制相关的知识。
如果你正在学习Java,不妨收藏这篇文章,或者关注我,定期收获与Java有关的知识和项目信息!
Java进阶知识前十三课的内容,可拉到文章末尾获取。
一、介绍
在编写程序的时候,经常会遇到运行前无法确定某些对象的类型,这时候,我们可以通过Java的反射机制,有效的解决这一难题。
Java反射是一种动态生成类和对象的机制。
编写代码时,我们可能并不能知道程序运行时,某些变量会传入何种类型的对象。 反射就是为了应对这种场景,在运行时,根据运行结果实时产生合适的类和对象的技术。
示例代码:
Player.java
public class Player { public void attack(){};}Soldier.java
public class Soldier extends Player{ @Override public void attack() { System.out.println("战士发动了剑击。"); }}Magician.java
public class Magician extends Player{ @Override public void attack() { System.out.println("法师发动了法术攻击。"); }}Game.java
import java.util.Scanner;public class Game { public static void main(String[] args) { System.out.println("请输入你的职业:"); Scanner sc = new Scanner(System.in); String role = sc.next(); Player player = null; try { player = (Player) Class.forName(role).newInstance(); } catch (InstantiationException e) { throw new RuntimeException(e); } catch (IllegalAccessException e) { throw new RuntimeException(e); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } player.attack(); }}
说明:
上例中Player是Soldier和Magician的父类,在Game.java中会引用到。将上述4个文件存放于src目录下,运行Game.java文件,在Run运行窗口中输入Soldier或Magician,看看结果有什么不一样。上例中,如果后续要增加游戏职业,无序对现有代码作出任何调整,只需在运行时输入正确的职业名,即可实现版本的更新,这就是Java反射的机制。二、核心类
Class类
反射类或接口的类,可以实例化具体的对象。
方法
用途
Class.forName()
获取指定Class类
classObj.newInstance()
调用class的构造方法创建对象
classObj.getConstructor()
获取class类的构造方法
classObj.getMethod()
获取class类的内部方法
classObj.getField()
获取class类的成员变量
Constructor类
对类的构造方法的抽象
方法
用途
classObj.getConstructor()
获取class类的构造方法
constructorObj.newInstance()
通过构造方法创建对象
Method类
对类的内部方法的抽象
方法
用途
classObj.getMethod()
获取class类的内部方法
methodObj.invoke()
调用并执行当前方法
Field类
指代类中某个成员变量
方法
用途
classObj.getField()
获取class类的成员变量
fieldObj.set()
设置成员变量的值
fieldObj.get()
获取成员变量的值
三、getDeclared方法
默认的反射机制智能获取public对象、方法和变量,如果要调用非public方法和变量,则需要实用getDeclared系列方法。
方法
用途
getDeclaredConstructor()
获取非public修饰的构造方法
getDeclaredMethod()
获取非public修饰的内部方法
getDeclaredField()
获取非public修饰的成员变量
关于java反射机制的知识点和实例演示就到这里。建议可以收藏这篇文章,多读几遍慢慢消化。
如果你对老K分享的内容有任何疑问,欢迎随时在评论区留言或者私信我。
正在学习的小伙伴记得给老K一个赞哦,你的支持是我持续输出课程内容最大的动力!
Java进阶知识前十三课的内容,可点击下方获取:
如何优雅的处理异常--Java进阶知识讲义系列(一)
包装器类装箱与拆箱的艺术——Java进阶知识讲义系列(二)
一文讲透Java字符串——Java进阶知识讲义系列(三)
List的用法和实例详解——Java进阶知识讲义系列(四)
Set的用法和实例详解——Java进阶知识讲义系列(五)
Map的用法和实例详解——Java进阶知识讲义系列(六)
常用集合的排序方法——Java进阶知识讲义系列(七)
I/O流之File类的用法和实例详解——Java进阶知识讲义系列(八)
「Java进阶」I/O操作必备知识点:字节流读写实例讲解
「Java进阶」I/O操作必备知识点:关于字符流读写的实例讲解
I/O流实战应用精选:网络图片下载器 Java必备基本功
Java多线程知识点详解,包含实例,搞懂多线程看这一篇文章就够了
如何理解Java中的线程同步锁?了解同步和锁的本质
结束语
我是专注于开发领域的 @老K玩代码 ,会持续生产关于如何学习编程语言的优质内容。
如果你想学习Java编程,或者想精进你的Java编程能力,可以关注我。
如果你对开发、编程有任何疑问或者有想了解的内容,而我暂时没有写到的,也欢迎随时来找我聊聊。
#头条创作挑战赛#
标签: #java目录下存放的是什么文件