基本反射了解

 1 package cn.wh;
 2 /**
 3  * java.lang.Class
 4  * @author 王恒
 5  * @time 2016年11月2日 上午10:39:25
 6  */
 7 public class RedlectTest {
 8     public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
 9         Cat cat=new Cat();System.out.println("--------------------------");
10         
11         Class c1=Class.forName("cn.wh.Cat");
12         Class c2=Cat.class;
13         Class c3=cat.getClass();
14         
15         System.out.println(c1.getName());
16         System.out.println(c1.getSimpleName());
17         //返回一个包含某些 Class 对象的数组,这些对象表示属于此 Class 对象所表示的类的成员的所有公共类和接口。
18         System.out.println(c1.getClasses());
19         System.out.println(c1.getPackage());
20         System.out.println(c1.getModifiers());
21         System.out.println(c1.getInterfaces());
22         System.out.println("接口数量 "+c1.getInterfaces().length);
23         System.out.println(c1.getSuperclass().getName());
24         System.out.println("实例化  "+c1.newInstance());
25     }
26 }
RedlectTest
 1 package cn.constructor;
 2 
 3 import java.lang.reflect.Constructor;
 4 import java.lang.reflect.InvocationTargetException;
 5 
 6 public class TestConstructor {
 7 
 8     public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
 9         Class claxx=Class.forName("cn.wh.Cat");
10         //查看有几个构造方法
11         Constructor[] cs=claxx.getConstructors();
12         System.out.println("有public几个构造方法   "+cs.length);
13         Constructor[] cs2=claxx.getDeclaredConstructors();
14         System.out.println("总共有几个构造方法   "+cs2.length);
15         //暴力反射,即没有public修饰的构造方法,使其能够创建构造方法
16         //c.setAccessible(true);
17         //一个参数
18         Constructor c=claxx.getDeclaredConstructor(String.class);
19         System.out.println(c.getName()+"---"+c.getModifiers());
20         //两个参数
21         Constructor c2=claxx.getDeclaredConstructor(String.class,String.class);
22         System.out.println(c.getName()+"---"+c.getModifiers());
23         //实例化
24         Object obj=c.newInstance("");
25         System.out.println(obj+"---"+obj.getClass().getSimpleName());
26         //Class<?>... parameterTypes  表示任意类型的可变参数
27     }
28 }
TestConstructor
 1 package cn.Field;
 2 
 3 import java.lang.reflect.Field;
 4 
 5 import cn.wh.Cat;
 6 
 7 public class TestField {
 8 
 9     public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchFieldException, SecurityException {
10         Class claxx=Class.forName("cn.wh.Cat");
11         Cat cat=(Cat) claxx.newInstance();
12         System.out.println("---------------------");
13         //获取声明字段数组
14         Field[] fs=claxx.getDeclaredFields();
15         System.out.println("数组长度为   "+fs.length);
16         
17         for(Field f:fs){ 
18             f.setAccessible(true);
19             System.out.println(f.getName()+"--"+f.getModifiers()+"---"+f.get(cat));
20         }
21         
22         //获取单个声明字段
23         System.out.println("---------------------获取单个声明字段");
24         Field f2=claxx.getDeclaredField("master");
25         f2.setAccessible(true);
26         System.out.println(f2.getName()+"--"+f2.getModifiers()+"---"+f2.get(cat));
27         System.out.println(f2.getName()+"--"+f2.getModifiers()+"---"+f2.get(null));
28         //若声明的字段是static 类型,则可以为f2.get(null),否则一律加对象
29     }
30 }
TestField
 1 package cn.wh;
 2 
 3 public class Cat extends Animal{//,Maoke{
 4     //protected int age=50;
 5     protected String age="我的年龄50";
 6     public static String master="周老师";
 7     
 8     public Cat(){
 9         System.out.println("Cat.Cat(111)");
10     }
11     public Cat(String age,String sname){
12          
13     }
14     
15     Cat(String master,String sname,String age1){
16         
17     };
18     
19     public Cat(String sname){
20         //super(); 写与不写 都存在!  如果写super()必须放在第一行
21         super(sname);
22         this.sname=sname;
23         //super.eat();
24         //System.out.println("Cat.Cat(222)"+super.age);
25         //System.out.println("Cat.Cat(222)"+age);
26     }
27 //    public float walk(String road){
28 //        System.out.println("Cat.walk()");
29 //        return 60f;
30 //    }
31 //    
32      float walk(){
33         System.out.println("Cat.walk()");
34         m1();
35         return 60f;
36     }
37      
38      
39      public void eat(){
40             System.out.println("Cat.eat(111)");
41         }
42      void m1(){
43          
44      }
45     
46 }
Cat
 1 package cn.wh;
 2 
 3 
 4 
 5 public  class Animal {
 6     
 7     protected  String  sname="";
 8     protected  int age=80;
 9     public static String master="杨老师";
10     public Animal(){
11         //System.out.println("Animal.Animal(111)");
12         sname="";
13     }
14     
15     public Animal(String sname){
16         //System.out.println("Animal.Animal(222)");
17     }
18     
19     public  void eat(){
20         System.out.println("Animal.eat(111)");
21     }
22     
23     public void eat(String foodName){
24         System.out.println("Animal.eat(222)"+foodName);
25     }
26     
27      String  eat(String foodName,int num){
28         System.out.println("Animal.eat(333)"+foodName);
29         return "好";
30     }
31     
32     
33     public void sleep(){
34         
35     }
36      float walk(){
37         System.out.println("Animal.walk()");
38         return 30.5f;
39     }
40     
41     
42     
43 }
Animal
 1 package cn.method;
 2 
 3 import java.lang.reflect.InvocationTargetException;
 4 
 5 import java.lang.reflect.Method;
 6 
 7 import cn.wh.Cat;
 8 
 9 public class TestMethod {
10     
11     public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
12         Cat cat=new Cat();
13         
14         Class claxx=Class.forName("cn.wh.Cat");
15         //获取所有方法         包括实例方法,即对象方法    类名.getInstanll();
16         Method[] ms=claxx.getDeclaredMethods();
17         for(Method m:ms){
18             System.out.println(m.getModifiers()+"--"+m.getName()+"--"+m.getParameterCount()+"--"+m.getReturnType());
19         }
20         
21         Method me=claxx.getDeclaredMethod("walk",String.class);
22         me.setAccessible(true);
23         me.invoke(cat,"貓");
24         
25         Method me2=claxx.getDeclaredMethod("eat");
26         me.setAccessible(true);
27         me2.invoke(cat);
28         
29         claxx.getDeclaredMethod("m1").invoke(null);
30     }
31 }
TestMethod

 

转载于:https://www.cnblogs.com/1020182600HENG/p/6022589.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转]让.NET应用秒变微服务

随着近年来微服务的发展&#xff0c;许多团队开始将自己的单体应用改造为微服务。通常Java或Go的应用可以通过业界已有的微服务框架作为微服务开发和改造的底座&#xff0c;封装掉解决跨网络问题带来的复杂性。但以Chassis模式进行的微服务改造有两大问题&#xff1a;多语言框架…

WPF 使用 MAUI 的自绘制逻辑

这是一个当前还没开发完成的功能&#xff0c;准确来说连预览版也算不上的功能。我原本以为 MAUI 是无法在 WPF 上面跑的&#xff0c;然而在看完了 MAUI 整个大的设计&#xff0c;才了解到&#xff0c;原来 MAUI 是一个非常庞大的开发项目。在 MAUI 里面&#xff0c;虽然现在是正…

[转]redis 5.0.5 5分钟搭建redis集群

环境&#xff1a;centos 7 1&#xff1a;下载并安装redis ​​​​​​​$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz$ tar xzf redis-5.0.5.tar.gz$ cd redis-5.0.5$ make redis 5.0版本 集群搭建不需要我们安装ruby就可以搭建成功&#xff0c;并且redis…

Window.document对象

一、找到元素&#xff1a; docunment.getElementById("id")&#xff1b;根据id找&#xff0c;最多找一个&#xff1b; var a docunment.getElementById("id");将找到的元素放在变量中&#xff1b; docunment.getElementsByName("name")&am…

C# 读写文件从用户态切到内核态,到底是个什么流程?

一&#xff1a;背景 1. 一个很好奇的问题我们在学习 C# 的过程中&#xff0c;总会听到一个词叫做 内核态 &#xff0c;比如说用 C# 读写文件&#xff0c;会涉及到代码从 用户态 到 内核态 的切换&#xff0c;用 HttpClient 获取远端的数据&#xff0c;也会涉及到 用户态 到 内核…

【土地评价与土地管理】案例:某地区土地农业利用潜力评价

文章目录 一、确定评价单元二、拟定潜力评价系统表、确定指标权重三、指标评价四、评定潜力等级五、得出潜力评价结果一、确定评价单元 土地潜力评价单元采用地块作为评价单元,此地块是建立在土地利用现状的基础上, 综合土地的自然属性来确定,评价单元界线与土地现有界线基本…

code point,code unit

2019独角兽企业重金招聘Python工程师标准>>> 从一段API描述谈起&#xff1a; 在String的length的API中描述是这样的&#xff01; lengthpublic int length() Returns the length of this string. The length is equal to the number of 16-bit Unicode characters i…

【土地评价与土地管理】案例:兰州市榆中县农用地分等

文章目录 一、资料收集二、确定标准耕作制度、基准作物、指定作物、光温(气候生产潜力)三、划分指标区,确定分等因素及权重四、编制“指定作物-分等因素-自然质量分”记分规则表五、绘制分等因素分值图,划分分等单元六、计算农用地自然质量分七、计算自然质量等指数八、计算…

业务多变的公司上云后蒸蒸日上

一、云服务器与传统服务器的对比 1&#xff09;、传统服务器 传统服务器是一个独立的硬件设备,可以理解成是一台放在机房的高配置电脑,可根据需求安装各种操作系统以及配置各种环境,性能也比较强大。 2&#xff09;、云服务器 云服务器是构建在硬件服务器集群之上&#xff0c;…

2016福州大学软件工程第四次团队作业-系统设计成绩汇总

第四次团队作业——系统设计打分统计结果如下&#xff1a; 学号组别团队分数贡献比例个人分数031401433606notconnected141613.83031402606606notconnected141413.33031402618606notconnected141814.34031402629606notconnected141413.33031402631606notconnected141914.590314…

[转]在C#中像Python一样编写TensorFlow机器学习代码

机器学习是一个令人激动人心的领域&#xff0c;一直有新的技术突破。研究人员不断推动机器智能的提升&#xff0c;教机器如何听说读写——这些曾经是我们人类专属的技能。机器学习的首选语言是Python&#xff0c;最受欢迎的库是Google的TensorFlow。几乎所有的代码示例都是用Py…

【土地评价与土地管理】教案 第一章:土地评价要素的选择

文章目录 1.1 土地构成要素与其农业利用1、光能条件2、热量条件3、降水条件1.1 土地构成要素与其农业利用 1、光能条件  光能是绿色植物进行光合作用和生物运动发展的主要能源  太阳辐射、日照时数  太阳辐射量随地域和季节变化较大,导致了土地利用的多样性和土地资源…

Blazor University (33)表单 —— EditContext、FieldIdentifiers

原文链接&#xff1a;https://blazor-university.com/forms/editcontext-fieldidentifiers-and-fieldstate/EditContext、FieldIdentifiers 和 FieldState请注意&#xff0c;对于那些希望了解 Blazor 如何“在后台”工作的人来说&#xff0c;这是一个高级主题。无需了解此信息即…

团队项目开发篇章8

例会时间&#xff1a;2016.11.3 整理&#xff1a;姬索肇 例会照片 每个人的工作 任务分配 我们今天与王鹿鸣学长和李云涛学长针对团队开发过程中遇到的问题进行了讨论&#xff0c;非常感谢学长们的热心帮助&#xff0c;同时我们也被他们强大的编程能力所折服~ 在这里为学长们点…

【地理信息系统GIS】教案(七章全)第一章:地理信息系统概述

文章目录 第一节 GIS基本概念第二节 GIS的组成第三节 GIS的功能第四节 GIS的发展第一节 GIS基本概念 1.1 GIS基本概念 1、信息 是用文字、数字、符号、语言、图象、图形等介质来表达事件、事物或现象等的内容、数量和特征,从而向人们(或系统)提供关于现实世界新的事实和知…

表达式的动态解析和计算,Flee用起来真香

前言在很多项目中经常会出现需要动态解析表达式和计算的场景&#xff0c;比如一些自动审核规则&#xff0c;或者是一些变量的值通过维护的公式在运行过程中动态算出&#xff1b;由于场景需求&#xff0c;都需要比较灵活的配置对应的表达式&#xff0c;然后希望在需要的时候能根…

C语言九十五之实现经典的反转数组(通过指针或数组下标操作)

✅作者简介&#xff1a;大家好我是码玛莎拉蒂&#xff0c;CSDN博客专家&#x1f947;&#x1f947;&#x1f947; &#x1f4c3;个人主页&#xff1a;个人主页 &#x1f525;系列专栏&#xff1a;C语言试题200例 &#x1f4ac;推荐一款模拟面试、刷题神器&#x1f449; 点击跳转…

Linux下使用shell实现上传linux下某个目录下所有文件到ftp

首先我们需要搞清楚单个文件怎么上传&#xff0c;把这个单文件上传到ftp上的实现命名为一个:upload_to_ftp_command.sh 之后&#xff0c;需要弄清楚怎么实现遍历一个目录下的所有文件的&#xff0c;把这个遍历某个目录下的文件实现命名为&#xff1a;foeach_directory_and_uplo…

[转]Mysql数据库开发的36条原则

前言 这些原则都是经历过实战总结而成 每一条原则背后都是血淋淋的教训 这些原则主要是针对数据库开发人员&#xff0c;在开发过程中务必注意 总是在灾难发生后&#xff0c;才想起容灾的重要性&#xff1b; 总是在吃过亏以后&#xff0c;才记得曾有人提醒过。 一、核心原则…

大话领域驱动设计——表示层及其他

概述表示层又称用户界面层&#xff0c;包含应用程序的页面、组件等UI元素。服务层提供项目的HTTP API接口&#xff0c;包含MVC Controller和相关组件。ABP框架虽然在表示层提供了不少组件&#xff0c;但是这些和DDD本身没有多少关系。而且随着前后端分离架构的流行&#xff0c;…