自学Java day18 jvav反射专题 从jvav到架构师
反射是jvav被视为动态语言的关键,可以让程序创建和控制任何类的对象,无需提前硬编码目标类,极大的提高了程序的灵活性和扩展性,降低模块的耦合性,提高自身的适应能力。反射机制是构建框架技术的基础所在,使用反射可以避免将代码写死在框架中。使得对象能在程序执行过程中动态生成。
下面是演示:
首先创建一个User类用于演示
class User {private String name = "这是一个name";private int age = 20;public User() {}public User(String name, int age) {this.name = name;this.age = age;}private User(String name) {this.name = name;this.age = 999;}private String info() {return "从jvav到架构师";}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}public String getName() {return name;}
}
下面将采用反射机制创建User对象
package com.company.class_;import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;class Class03 {public static void main(String[] args) throws Exception {Class cls = Class.forName("com.company.class_.User");Object o1 = cls.newInstance(); //使用构造器:public User()Constructor m2 = cls.getDeclaredConstructor(String.class, int.class);m2.setAccessible(true);Object o2 = m2.newInstance("这是另一个人名", 1926);//使用构造器:public User(String name, int age)Constructor m3 = cls.getDeclaredConstructor(String.class);m3.setAccessible(true);Object o3 = m3.newInstance("这是另一个人名");//使用构造器:private User(String name)Method getName = cls.getMethod("getName");//使用反射机制访问public方法System.out.println("o1的名字是:" + getName.invoke(o1) + " " + o1);System.out.println("o2的名字是:" + getName.invoke(o2) + " " + o2);System.out.println("o3的名字是:" + getName.invoke(o3) + " " + o3);System.out.println();Method info = cls.getDeclaredMethod("info");//使用反射机制访问private方法info.setAccessible(true);//使用反射爆破 可访问private成员System.out.println(info.invoke(o1));System.out.println();System.out.println(o1);Field x = o1.getClass().getDeclaredField("age");x.setAccessible(true);x.set(o1, 333);//修改private属性System.out.println(o1);System.out.println();Class f = Class.forName("java.io.File");//使用反射机制创建文件//f.newInstance();Constructor ff = f.getDeclaredConstructor(String.class);Object o = ff.newInstance("D:/Java/File/Class.txt");Method mf1 = f.getDeclaredMethod("createNewFile");mf1.invoke(o);System.out.println("创建文件完成");}
}
结果演示:
自学Java day18 jvav反射专题 从jvav到架构师相关推荐
- 架构师之路:从Java码农到年薪八十万的架构师
Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地. 有不少朋友问,成为Java架构师除了掌握Jav ...
- Java程序员如何成为内功深厚的架构师
一听到架构师,首先便想到的是在一间宽敞的房间中间坐着一位衣着得体的中年男人,望着落地窗外的风景凝思,万千思绪在脑海里翻腾,颇有运筹帷幄千里外的气势.程序员究竟是做架构师还是项目经理,最近看到微软潘正磊 ...
- 自学Java day8 项目-零钱通 从jvav到架构师
一个小项目,也无明确的需求,随便敲敲,权当练练手了 jvav实现源码: package com.jvav.project;import java.time.LocalDateTime; import ...
- Java、R、JS 最常用,架构师薪资最高!起底中国开发者现状
想了解基础的中国软件开发者用户画像吗?想了解一线城市开发者的薪酬吗?想了解大多数开发者偏爱的编程语言吗?想了解高薪开发者从事的都是什么岗位吗?想了解最新的业界技术趋势吗?......本文带你一探究竟. ...
- 每一个JAVA程序员都应该怀揣一个架构师的梦,这样你的职业发展前景一片大好...
随着互联网发展经历了PC互联网时代.移动互联网时代以及IOT物联网智能时代,在万物皆互联的人工智能时代,数据信息爆发式增长,并发量也变得越来越有挑战性,并对系统的可用性.扩展性.易用性等提出更高的要求 ...
- Java工程师成神之路:进阶架构师的学习路线规划以及书籍推荐
一.基础篇 面向对象 什么是面向对象 面向对象.面向过程 面向对象的三大基本特征和五大基本原则 平台无关性 Java如何实现的平台无关性的 JVM还支持哪些语言(Kotlin.Groovy.JRuby ...
- 适合专科Java的大厂晋升路线,阿里P8架构师的不传之秘
最近,有不少朋友留言一些问题,有大三大四学生的,还有一些想转型做Java的: 毕业之后,应该找什么工作? 现在是不是该系统学一些编程之类的,听说薪资很高? 号主您是学Java的吗?是自学的吗?我现在学 ...
- Java学习的30个目标以及系统架构师推荐的书
第一阶段 你需要学习JAVA语言的基础知识以及它的核心类库 (collections,serialization,streams,networking, multithreading,reflect ...
- java前沿技术_互联网百强企业架构师告诉你,Java应该这么学!云和数据超全面Java中级程序员学习路线图重磅发布!...
作为常居编程语言排行榜第一名的编程语言,Java语言以其稳定性.健壮性著称,是一门非常成熟的编程语言,多年来一直是国际上众多企业的首选编程语言. Java语言不仅吸收了C++语言的各种优点,还摒弃了C ...
最新文章
- 系统、应用监控的缜密思路,性能瓶颈的克星
- JavaScript中Exists函数
- bom event周期_前端知识点总结——BOM
- Java黑皮书课后题第10章:**10.9(Course类)如下改写Course类
- Axure RP 的安装与卸载
- Linux 文件系统基础
- Windows下同时安装Anaconda2(Python2)和Anaconda3(Python3)以及tensorflow
- Java经典基础面试题
- 怎样用计算机求成绩平均分,2017年计算机一级WPS辅导:WPS2007中求特定比例成绩的平均分...
- python装饰器详解 带参数-python中的装饰器详解
- Atitit.struts2体系结构大总结
- MPU6050+一阶互补滤波
- 在线客服代码:在线QQ客服、在线旺旺客服
- excel合并计算机操作,电脑把多个Excel文件合并成一个文件的方法
- 陈春花:创造价值 做好产品
- 语音通信64K的由来
- 关于日期插件在chrome中出现被遮挡的问题
- 百度糯米用大数据重塑O2O产业
- MES系统的应用(中)
- 打开浏览器时主页被锁定怎么也改不掉的一个好办法