java 反射与泛型_Java基础系列 - 泛型和反射机制

package com.test5;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

/**

* Java泛型和反射机制(泛型的好处 代码安全简单,自动装箱拆箱,提高代码的重用率)

*/

public class test5 {

public static void main(String[] args) {

Employer employer = new Employer(1000, "张三", 25);

Ref ref1 = new Ref(employer);

System.out.println("---------------------打印类信息-----------------------");

ref1.printClassMethodMessage();

System.out.println("---------------------打印类成员变量信息-----------------------");

ref1.printFieldMessage();

/* 打印显示

---------------------打印类信息-----------------------

类的名称是:com.test5.Employer

java.lang.String toString()

java.lang.String getName()

void setName(java.lang.String,)

int getEid()

int getAge()

void setAge(int,)

void setEid(int,)

void wait(long,)

void wait(long,long,int,)

void wait()

boolean equals(java.lang.Object,)

int hashCode()

java.lang.Class getClass()

void notify()

void notifyAll()

---------------------打印类成员变量信息-----------------------

int eid

java.lang.String name

int age

*/

}

}

/**

* 泛型类

* @param

*/

class Ref {

private T o;

//构造函数

public Ref(T o) {

this.o = o;

}

/**

* 打印类的信息,包括类的成员函数,成员变量

*/

public void printClassMethodMessage() {

//要获取类的信息,首先要获取类的类类型

Class c = o.getClass();//传递的是哪个子类的对象,c 就是子类的类类型

//获取类的名称

System.out.println("类的名称是:" + c.getName());

/**

* Method类,方法对象

* 一个成员方法就是一个Method对象

* getMethods()方法获取的是所有的public的函数,包括父类继承而来的

* getDeclaredMethods()方法获取的是所有该类自己声明的方法,不问访问权限

*/

Method[] methods = c.getMethods();//c.getDeclaredMethods()

for (int i = 0; i < methods.length; i++) {

//得到方法的返回值类型的类类型

Class returnType = methods[i].getReturnType();

System.out.print(returnType.getName() + " ");

//打印方法名字

System.out.print(methods[i].getName() + "(");

Class>[] parameterTypes = methods[i].getParameterTypes();

String para = "";

for (Class class1 : parameterTypes) {

para += class1.getName() + ",";

System.out.print(para);

}

System.out.println(")");

}

}

/**

* 获取成员变量的信息

*/

public void printFieldMessage() {

Class c = o.getClass();

/**

* 成员变量也是对象

* java.lang.reflect.Field

* getFields()方法获取的是所有的public 的成员变量的信息

* getDeclaredFields 获取的是该类自己声明的成员变量的信息

*/

// Field[] fs = c.getFields();

Field[] fs = c.getDeclaredFields();

for (Field field : fs) {

//得到成员变量的类型的类类型

Class fieldType = field.getType();

String typeName = fieldType.getName();

//得到成员变量的名称

String fieldName = field.getName();

System.out.println(typeName + " " + fieldName);

}

}

}

class Employer {

public Employer(int eid, String name, int age) {

this.eid = eid;

this.name = name;

this.age = age;

}

private int eid;

private String name;

private int age;

public int getEid() {

return eid;

}

public void setEid(int eid) {

this.eid = eid;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return "Employer{" +

"eid=" + eid +

", name='" + name + '\'' +

", age=" + age +

'}';

}

}

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

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

相关文章

Linux环境下的Popush部署——张凯

完成情况&#xff1a; 已按照相关部署文档完成了所有任务&#xff0c;包括软件包的安装与配置&#xff0c;以及对各种开发语言的支持&#xff0c;以及gdb的调试功能的支持 遇到的主要问题&#xff1a; 由于从大二以来我基本上所有的开发工作都是在Linux下做的&#xff0c;因此对…

【c++】标准模板库STL入门简介与常见用法

一、STL简介 1、什么是STL STL&#xff08;Standard Template Library&#xff09;标准模板库&#xff0c;主要由容器、迭代器、算法、函数对象、内存分配器和适配器六大部分组成。STL已是标准C的一部分&#xff0c;使用STL开发系统可以提高开发效率。 2、容器&#xff08;Cont…

强连通分量(学习心得)

定义&#xff1a;有向图强连通分量&#xff1a;在有向图G中&#xff0c;如果两个顶点vi,vj间&#xff08;vi>vj&#xff09;有一条从vi到vj的有向路径&#xff0c;同时还有一条从vj到vi的有向路径&#xff0c;则称两个顶点强连通如果有向图G的每两个顶点都强连通&#xff0c…

java for的增强_Java基础之增强for循环

平时大家for循环应该用的不少&#xff0c;特别是增强for循环&#xff0c;简单快捷。但是在增强for中做删除操作&#xff0c;却会抛出java.util.ConcurrentModificationException&#xff0c;一起来看下。上面的代码&#xff0c;在for循环执行完if中的remove&#xff0c;遍历下一…

window.history 和 DWZ 框架

DWZ框架的ajax请求返回的一般都是一个HTML片段&#xff0c;整个页面是由一个个HTML片段组成的&#xff0c;可以由TAB切换其内容&#xff0c;但是只有一个body和HEAD&#xff0c;一般head 和 菜单栏是不会动的。 今天遇到一个问题&#xff0c;当一个点击进入一个tab页面时&#…

大道至简(第六章)读后感

大道至简&#xff08;第六章&#xff09;读后感 还是不乐意去读&#xff0c;但总算可以耐心的读下去了&#xff0c;这也许也算是读大道至简以来的收获之一吧。第六章的题目是从编程到工程&#xff0c;看到工程二字&#xff0c;让我不由想起了前几天和高中同学聊天。他报的燕大土…

遏止个人信息泄露亟待立法跟进

据报道&#xff0c;近日全国30个省份275位艾滋病感染者称接到了诈骗电话&#xff0c;艾滋病感染者的个人信息疑似被大面积泄露。无独有偶&#xff0c;近日票务网站大麦网因账号信息被窃取&#xff0c;间接导致全国多地用户受骗。目前至少有17名受害者&#xff0c;被骗至少54万元…

确认类是否可以在运行期使用

问题: 你正在使用最新版的 SDK 中的一些类,但是你不确定这些类是否能在你程序运行的设 备中可用,因为有可能你部署的目标设备要比最新版 SDK 早。 方案: 用NSClassFromString函数. 传入类的名称字符串符。若是返回值为空(nil),则表示这个类无法在这台设备上使用;反之,这个类则…

最新hosts,更新hosts,可用

点击这里&#xff0c;全选后复制&#xff0c;粘贴到C:\Windows\System32\drivers\etc的hosts里面&#xff0c;把原来的置换了转载于:https://www.cnblogs.com/zzw1994/p/4940924.html

酒店业解决方案

思科业务就绪酒店解决方案&#xff0c;为酒店的经营和管理提供一个高效率、高盈利、且可不断发展和改进的平台&#xff0c;帮您重建酒店竞争优势&#xff0c;为酒店带来意想不到的转变&#xff01; 思科酒店行业解决方案更加融合的思科网络在改善酒店的运营和员工生产率&#x…

配置SQL Server 2012 AlwaysOn ——step1 建立AD域及DNS配置

需要三台安装好windows server 2008 R2 sp1的虚拟机服务器SQLTESTDNS&#xff0c;SQLTESTMAIN,SQLTESTSUB&#xff0c;以SQLTESTMAIN为主数据库及群集服务器&#xff0c;SQLTESTDNS为DNS及域服务器 1.在SQLTESTDNS的服务器管理器内设置静态IP地址192.168.10.1,DNS为127.0.0.1&a…

lintcode:递归打印数字

题目 用递归打印数字 用递归的方法找到从1到最大的N位整数。 样例 给出 N 1, 返回[1,2,3,4,5,6,7,8,9]. 给出 N 2, 返回[1,2,3,4,5,6,7,8,9,10,11,...,99]. 注意 用下面这种方式去递归其实很容易&#xff1a; recursion(i) {if i > largest number:returnresults.add(i)r…

做免费的EDM,EmailCar看中的是挖掘数据的价值

从2008年开始&#xff0c;做了9年企业级EDM&#xff08;电子邮件营销&#xff09;服务的陆霏近日宣布&#xff0c;他们的产品EmailCar从4.0版本开始永久免费为企业提供电子邮件基础投递业务。 我们电子邮箱经常收到的推广邮件就属于EDM&#xff0c;即Email Direct Marketing。这…

java 读取split_Java报错系列——split

在String中,split方法如下&#xff1a;可见&#xff0c;split的核心在于Pattern.compile(regex).split(this, limit);Java提供Pattern,Matcher用于支持正则&#xff0c;可以看一个例子&#xff1a;运行结果是&#xff1a;0,1||3,4|ab|7,8|cef|8,9||11,12|kk|13,14|a|需要注意的…

VS2012生成事件

Visual Studio 事件生成功能对我们开发综合项目的过程中尤为重要。 下面以VS2012为例&#xff1a; 选择工程-> 属性->编译->生成事件 包括两个生成事件&#xff1a;预先生成事件和后期生成事件 直接在相应的文本框里编写写脚本即可&#xff0c;如&#xff1a;编译完成…

H3C Navigate 2017 | 拉近世界的距离 新华三的泛联接版图

就今天而言&#xff0c;联接世界的网络外延已经无限扩大&#xff0c;联接的方式也越来越复杂。从互联网时代的PC互联&#xff0c;演进到移动互联网时代手机等移动终端的互联&#xff0c;而即将大规模爆发的物联网应用时代&#xff0c;所有的事物都可能被连入网络&#xff0c;一…

java gc log调优_Java 开启 gc 日志

构建一个 jar 包程序使用 Spring Boot 构建一个简单的 web 程序&#xff0c;可以直接使用 java -jar 来启动。RestControllerRequestMapping("/root")SpringBootApplicationpublic class SbDemoApplication {public static void main(String[] args) {SpringApplicat…

大数据时代的公共安全治理

未来&#xff0c;大数据将成为社会基础设施的一部分&#xff0c;跟公路、自来水、电一样&#xff0c;成为人们生活不可或缺的一部分。但大数据的作用并不仅仅局限于为普通消费者提供生活必须服务&#xff0c;它已经开始在信息产业、公共安全、交通运输、金融、水利等领域中发挥…

CCNA第二讲笔记

网络定义&#xff1a;一组由介质&#xff08;线缆&#xff09;互联的网络设备&#xff08;路由器、交换机&#xff09;和终端系统&#xff08;PC&#xff09;&#xff1b; 工作组&#xff1a;局域网范畴&#xff0c;范围最小的局域网&#xff0c;且不涉及网络设备。台式机需要有…

晶科电力打造山东省最大物流港分布式光伏项目

近日&#xff0c;晶科电力有限公司宣布&#xff0c;由该公司投建的山东省最大物流港分布式光伏项目已破土动工&#xff0c;成为山东省又一标志性光伏项目。 该项目装机量为6兆瓦&#xff0c;占用物流港厂房屋顶面积约68330平方米&#xff0c;平均每年发电量约601.22万kWh&#…