代码: import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ObjectUtil { /** * 利用Java反射根据类的名称获取属性信息和父类的属性信息 * @param className * @return * @throws ClassNotFoundException */ public stati…
最近在筹划做一个监控系统.其中就要获取主机信息,其中遇到一些问题.在此做个记录,以便以后查阅. 在该监控系统中,想要做到主机的CPU.内存.磁盘.网络.线程.JVM内存.JVM GC 等维度的监控,JVM方面的监控还好说,直接用JMX做就行了,关键是主机信息不好做监控,JDK没有直接的方案获取系统主机信息.在刚开始想到了以下几种方式获取主机维度的信息. 一.命令行 刚开始想的是用最常用的命令行获取主机维度的信息,具体做法是针对不同的系统,写不同的命令.比如说Linux系统,使用TOP命令就能获取…
由于自己也不是特别的理解,不能做过多的解释,因为这些是问过老师做出来的,我还没有学到这里.如果有解释错误的 指出来我改正一下.见谅~(如果学到这里了,会完善) 工具类(SQLUtil)核心代码: package edu.nf.homeWork.utils; import java.lang.reflect.Field; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet;…
Sigar简介 Sigar是Hyperic-hq产品的基础包,是Hyperic HQ主要的数据收集组件.它用来从许多平台收集系统和处理信息. 这些平台包括:Linux, Windows, Solaris, AIX, HP-UX, FreeBSD and Mac OSX. Sigar有C,C#,Java和Perl API,java版的API为sigar.jar,sigar.jar的底层是用C语言编写的,它通过本地方法来调用操作系统API来获取系统相关数据. (查看源码,可以发现,各种获取信息的方法…
通过指定对应的Class对象,程序可以获得该类里面所有的Field,不管该Field使用private 方法public.获得Field对象后都可以使用getType()来获取其类型. Class<?> type = f.getType();//获得字段的类型 但此方法只对普通Field有效,若该Field有泛型修饰,则不能准确得到该Field的泛型参数,如Map<String,Integer>; 为了获得指定Field的泛型类型,我们采用: Type gType = f.getG…
引言 自从JDK5以后,Java Class类增加了泛型功能,从而允许使用泛型来限制Class类,例如,String.class的类型实际上是 Class 如果 Class 对应的类暂时未知,则使 Class<?>.通过在反射中使用泛型,可以避免使用反射生成的对象需要强制类型转换. 泛型作用对比: 如下示例没有使用泛型时,编译不报错,运行时报错强制转换异常 public class HasNoFanxin { public static Object newInstance(String cl…
最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使用了泛型的代码在运行期间相关的泛型参数的类型会被擦除,我们无法在运行期间获知泛型参数的具体类型(所有的泛型类型在运行时都是Object类型). 但是有的时候,我们确实需要获知泛型参数的类型,比如将使用了泛型的Java代码序列化或者反序列化的时候,这个时候问题就变得比较棘手. ? 1 2 3 4 5…
之前学过的集合里面都有泛型,规定了泛型的类型以后,就不能往这个集合添加除了这个类型之外的类型数据了. 那么,有什么方法可以越过这个泛型,添加特定类型以外的类型数据么? 例子:  往ArrayList<Integer>集合中添加一个字符串String类型的数据 分析: 通过查看ArrayList的add()方法,可以知道,add(E e).E这个泛型是Object的. 就可以通过反射来直接调用ArrayList集合的add方法进行添加 public static void main(String…
/** * @author Administrator * 好处:泛型:1安全 2减少代码重用率 */ package com.test; import java.lang.reflect.Method; public class Test2 { public static void main(String[] args) { // TODO Auto-generated method stub // Gen<String> gen1 = new Gen<String>("…
一.什么是Java反射机制? [1]反射机制是在运行状态中,对于任何一个类,都能够知道这个类的所有属性和方法: [2]对于任意一个对象,都能够调用它的任意一个属性和方法: 像这种动态获取类的信息以及动态调用对象的方法的骚操作称为java语言的反射机制. 二.Java反射机制能够获取及操作哪些信息? [1]获取类的包名 + 类名 1 package com.zyy.test.reflect; 2 3 public class TestReflect { 4 5 public static void…