每天学点java_反射作用
package com.czj; import java.util.List; public class Person { String str= ""; public Person() { System.out.println("person 空构造函数"); } public Person(String str ) { System.out.println(str); } public Person(String str,int i ) { System.out.println(str+":"+i); } private Person(List list){ System.out.println("list"); } public void out(){ System.out.println("调用out()方法,为空"); } public Class[] out(String name,int password){ System.out.println(name+":"+password); return new Class[] {}; } private void out(String name){ System.out.println(name); }}
package com.czj; import java.lang.reflect.Constructor;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.List; public class Demo { /* * 反射机制, 创建类的对象; 获取类里面的 属性;方法;构造函数; */ public void test() throws Exception{ //1 Class class1=Class.forName("com.czj.Person"); //2 Class class2=Person.class; //3 Class class3=new Person().getClass(); } //1;调用无参构造函数 public void run1() throws Exception{ Class clazz=Class.forName("com.czj.Person"); Constructor e= clazz.getConstructor(null);//调用为空的够早函数; 如果有参数的就把null改为类似 类.class(String.class); Person p=(Person) e.newInstance(null);//返回一个object对象所以要强制转换,如果有参数的就把null改为属性值; System.out.println(p.str); } //2;构造有一个参数的构造函数; String.class public void run2() throws Exception{ Class clazz=Class.forName("com.czj.Person"); Constructor e= clazz.getConstructor(String.class);//调用为空的够早函数; 如果有参数的就把null改为类似 类.class(String.class); Person p=(Person) e.newInstance("参数string");//返回一个object对象所以要强制转换,如果有参数的就把null改为属性值; System.out.println(p.str); } //调用有多个参数的构造函数 public void run3() throws Exception{ Class clazz=Class.forName("com.czj.Person"); Constructor e= clazz.getConstructor(String.class,int.class);//调用为空的够早函数; 如果有参数的就把null改为类似 类.class(String.class); Person p=(Person) e.newInstance("参数string",10);//返回一个object对象所以要强制转换,如果有参数的就把null改为属性值; System.out.println(p.str); } //调用私有的构造函数 public void run4() throws Exception{ Class clazz=Class.forName("com.czj.Person"); Constructor e= clazz.getDeclaredConstructor(List.class);//调用为私有的函数; 用到getDeclaredConstructor e.setAccessible(true);//暴力破解,如果是private一样能访问到里面的东西; Person p=(Person) e.newInstance(new ArrayList());//返回一个object对象所以要强制转换,如果有参数的就把null改为属性值; System.out.println(p.str); } public void go() throws Exception{ Person p=new Person(); Class clazz=Class.forName("com.czj.Person"); Method method=clazz.getMethod("out", String.class,int.class);//第一个参数值为方法名, 第二个为参数类型; method.invoke(p, "调用带2个参数的方法",10); } public void go1() throws Exception{ Person p=new Person(); Class clazz=Class.forName("com.czj.Person"); Method method=clazz.getDeclaredMethod("out",String.class);//第一个参数值为方法名, 第二个为参数类型,可以有多个参数类型; method.setAccessible(true);//暴力获取私有权限; 私有方法获取用declaredmethod. method.invoke(p, "调用带2个参数的方法"); } public static void main(String []args) throws Exception{ Demo demo=new Demo();/* demo.run1(); demo.run2(); demo.run3(); demo.run4();*/ demo.go1(); } }
调用私有的反射时, 第一次忘记是getDeclaredConstructor()方法; 还有java报运行错误; 因为List.class我使用的java.awt.list包.有时候可以检查包是否导入正确来排除一些问题
转载于:https://www.cnblogs.com/JohnChen-happy/p/4337086.html
每天学点java_反射作用相关推荐
- 为什么 学汽修 java_这七个优势 告诉你为什么要学汽修
学技术,很多人会犹豫.迷茫,担心将来就业情况?什么技术值得被选择?现在人们的出行离不开汽车,随着我国汽车产业的发展,汽车保有量节节攀升,汽车行业前景无限,所以学汽车是比较有优势的行业. 1.不是你去找 ...
- 学会计学java_我只是一个初中毕业的,现在很想学会计,我不知道从何学起?...
我只是一个初中毕业的,现在很想学会计,我不知道从何学起?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我只是一个初中毕 ...
- 多高学历的人能学懂java_初中学历学习java能行吗?
初中学历报培训班?你是不是被洗脑了?是你就眨眨眼 初中学历一样可以学习Java,没有哪一条规定学历低就不能学习Java 能不能找到工作取决于你的技术,还取决于你的运气,假如你头简历碰到一家不要求学历的 ...
- 怎么装作自己学过java_【求教】明明只学过java基础,怎么装得像学完javaweb的
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 鲁镇的网吧的格局,是和别处不同的:都是门口一个曲尺形的大柜台,柜里面预备着热水,可以随时泡奶茶.上学的人,中午傍晚放了学,每每花三元钱,上两个小时,--这 ...
- 明明努力了却学不好Java_为什么我这么努力,还是得不到自己想要的结果???...
不知道大家是否有过这样的困惑,为什么我这么努力了,仍然达不到想要的结果. 读书时坐在同样的教室,学习同样的知识,明明态度端正,成绩却不理想:上班时干着相同的工作,坚持着相同的作息,明明兢兢业业,职位却 ...
- 优达学城java_优达学城数据分析师纳米学位——P4项目知识点整理及代码分析
#P4项目知识点整理 ##P4项目概述 ##R语言知识点汇总 ##数据分析实例解析 #P4项目概述 使用R+EDA(exploratory data analysis探索性数据分析)(探索式数据分析是 ...
- 优达学城java_优达学城数据分析师纳米学位——P3项目知识点整理及代码分析
P3 OpenStreetMap 项目思路整理 P3项目的核心在于数据的整理 data cleaning 数据清洗,数据来源于开源的OpenStreetMap平台,该平台上的很多数据都是开发者自行输入 ...
- 零基础学怎么学Java_零基础学java难么?怎么自学?
在计算机发展迅速的今天,越来越多的人去学习编程,其中Java就是大家热衷的语言之一.这时候就有人问,零基础学java难么?下面小编将回答这一问题并给出学习路线. 小编想说,这个实际上要看个人能力以及前 ...
- 学渣该不该学java_为什么很多学霸不愿给学渣讲题?不是因为高冷,而是学渣太难带...
文/小玉说 从小时候开始,我们就被家长们灌输要互相帮助,不耻下问的概念,在生活上遇到琐事要跟同学.朋友互相帮助,在学习上遇到不懂的问题,要向其他同学.老师请教. 不知道从什么时候开始,有了学霸和学渣之 ...
最新文章
- 那个脑袋生锈的我写的东西
- R构建分位数回归模型(Quantile Regression)
- linux之xargs详解
- 中小企业组网基础方案:通过MPLS技术实现
- Salem and Sticks
- 谈谈我对Promise的理解
- npm install 报错 npm WARN tar ENOENT: no such file or directory, open... 解决方式
- php require 500,thinkphp5出现500错误怎么办
- 利用jsonp、iframe和location.hash解决跨域问题
- python123判断性别程序_听说胎心能够预测宝宝性别?这是真的吗?
- 干货 物联网卡使用9大常见问题解惑
- .cpp文件转换为.exe文件过程(C++)
- 隐藏IP地址的方法利弊
- 20181012 excel 填充序列 快捷键
- 什么是UserAgent
- Q1财报之后,美团继续看未来
- linux 进程无法启动,linux6.*无法正常启动has进程解决方案
- vuex 设计思路和实现
- 2.命名空间实现机制
- 《Unity Shader入门精要》 第五章 开始学习Unity Shader之旅 笔记
热门文章
- MySQL存储引擎、MyISAM、InnoDB
- hadoop-hdfs-ha配置-搭建
- ubuntu下面安装Keil uvision4与入门实例
- kaggle數據集下載到colab上并且解压
- thuderbird接收qq邮箱设置
- intellij中出現java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration解決方案
- 张量的通俗理解和计算
- sklearn没有实现ID3算法
- The disk contains an unclean file system\
- c++趣味小程序_工具类小程序10天增长103万全复盘