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_反射作用相关推荐

  1. 为什么 学汽修 java_这七个优势 告诉你为什么要学汽修

    学技术,很多人会犹豫.迷茫,担心将来就业情况?什么技术值得被选择?现在人们的出行离不开汽车,随着我国汽车产业的发展,汽车保有量节节攀升,汽车行业前景无限,所以学汽车是比较有优势的行业. 1.不是你去找 ...

  2. 学会计学java_我只是一个初中毕业的,现在很想学会计,我不知道从何学起?...

    我只是一个初中毕业的,现在很想学会计,我不知道从何学起?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我只是一个初中毕 ...

  3. 多高学历的人能学懂java_初中学历学习java能行吗?

    初中学历报培训班?你是不是被洗脑了?是你就眨眨眼 初中学历一样可以学习Java,没有哪一条规定学历低就不能学习Java 能不能找到工作取决于你的技术,还取决于你的运气,假如你头简历碰到一家不要求学历的 ...

  4. 怎么装作自己学过java_【求教】明明只学过java基础,怎么装得像学完javaweb的

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 鲁镇的网吧的格局,是和别处不同的:都是门口一个曲尺形的大柜台,柜里面预备着热水,可以随时泡奶茶.上学的人,中午傍晚放了学,每每花三元钱,上两个小时,--这 ...

  5. 明明努力了却学不好Java_为什么我这么努力,还是得不到自己想要的结果???...

    不知道大家是否有过这样的困惑,为什么我这么努力了,仍然达不到想要的结果. 读书时坐在同样的教室,学习同样的知识,明明态度端正,成绩却不理想:上班时干着相同的工作,坚持着相同的作息,明明兢兢业业,职位却 ...

  6. 优达学城java_优达学城数据分析师纳米学位——P4项目知识点整理及代码分析

    #P4项目知识点整理 ##P4项目概述 ##R语言知识点汇总 ##数据分析实例解析 #P4项目概述 使用R+EDA(exploratory data analysis探索性数据分析)(探索式数据分析是 ...

  7. 优达学城java_优达学城数据分析师纳米学位——P3项目知识点整理及代码分析

    P3 OpenStreetMap 项目思路整理 P3项目的核心在于数据的整理 data cleaning 数据清洗,数据来源于开源的OpenStreetMap平台,该平台上的很多数据都是开发者自行输入 ...

  8. 零基础学怎么学Java_零基础学java难么?怎么自学?

    在计算机发展迅速的今天,越来越多的人去学习编程,其中Java就是大家热衷的语言之一.这时候就有人问,零基础学java难么?下面小编将回答这一问题并给出学习路线. 小编想说,这个实际上要看个人能力以及前 ...

  9. 学渣该不该学java_为什么很多学霸不愿给学渣讲题?不是因为高冷,而是学渣太难带...

    文/小玉说 从小时候开始,我们就被家长们灌输要互相帮助,不耻下问的概念,在生活上遇到琐事要跟同学.朋友互相帮助,在学习上遇到不懂的问题,要向其他同学.老师请教. 不知道从什么时候开始,有了学霸和学渣之 ...

最新文章

  1. 那个脑袋生锈的我写的东西
  2. R构建分位数回归模型(Quantile Regression)
  3. linux之xargs详解
  4. 中小企业组网基础方案:通过MPLS技术实现
  5. Salem and Sticks
  6. 谈谈我对Promise的理解
  7. npm install 报错 npm WARN tar ENOENT: no such file or directory, open... 解决方式
  8. php require 500,thinkphp5出现500错误怎么办
  9. 利用jsonp、iframe和location.hash解决跨域问题
  10. python123判断性别程序_听说胎心能够预测宝宝性别?这是真的吗?
  11. 干货 物联网卡使用9大常见问题解惑
  12. .cpp文件转换为.exe文件过程(C++)
  13. 隐藏IP地址的方法利弊
  14. 20181012 excel 填充序列 快捷键
  15. 什么是UserAgent
  16. Q1财报之后,美团继续看未来
  17. linux 进程无法启动,linux6.*无法正常启动has进程解决方案
  18. vuex 设计思路和实现
  19. 2.命名空间实现机制
  20. 《Unity Shader入门精要》 第五章 开始学习Unity Shader之旅 笔记

热门文章

  1. MySQL存储引擎、MyISAM、InnoDB
  2. hadoop-hdfs-ha配置-搭建
  3. ubuntu下面安装Keil uvision4与入门实例
  4. kaggle數據集下載到colab上并且解压
  5. thuderbird接收qq邮箱设置
  6. intellij中出現java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration解決方案
  7. 张量的通俗理解和计算
  8. sklearn没有实现ID3算法
  9. The disk contains an unclean file system\
  10. c++趣味小程序_工具类小程序10天增长103万全复盘