/*
* Use Reflect
*
* */
package com.HP;
import java.lang.reflect.*;
public class testReflect {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
testReflect tr = new testReflect();
//tr.printMethod(args);
//tr.InsTrance(args);
//tr.ExceConstructor();
//tr.SetField();
//tr.ArrayWString();
tr.ArrayMutiString();
}
//Print methods of the class
public void printMethod(String[] args){
Class c;
try {
c = Class.forName(args[0]);
Method m[] = c.getDeclaredMethods();
for(int i=0;i<m.length;i++){
System.out.println(" "+i+" "+m[i].toString());
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//judge the object is belong to the class or not.
public void InsTrance(String[] args){
try {
Class IsA = Class.forName("com.HP.DBDAO");
boolean bo1 = IsA.isInstance(new Integer(37));
System.out.println(bo1);
boolean bo2 = IsA.isInstance(new DBDAO());
System.out.println(bo2);
}
catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//print method of the class, include the contructor method , parameters and exception type
public void FindMethod(String args[]){
try {
Class cl1 = Class.forName("com.HP.DBDAO");
Method m[] = cl1.getDeclaredMethods();
Constructor contr[] = cl1.getDeclaredConstructors();
for(int z=0;z<contr.length;z++){
System.out.println("contr #" + z + " " + contr[z]);
}
for(int i=0;i<m.length;i++){
Method me = m[i];
System.out.println("name = "+ me.getName());
System.out.println("decl class = "+me.getDeclaringClass());
Class pvec[] = me.getParameterTypes();
for(int j=0;j<pvec.length;j++){
System.out.println(" Parm #"+j+" "+pvec[j]);
}
Class evec[] = me.getExceptionTypes();
for(int z=0;z<evec.length;z++){
System.out.println("exc #" + z + " " + evec[z]);
System.out.println("return type = " + me.getReturnType());
System.out.println("-----");
}
}
}
catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//print the fields in the class and the field type
public void FindFields(){
try{
Class cl1 = Class.forName("com.HP.DBDAO");
Field fields[] = cl1.getFields();
for(int i=0;i<fields.length;i++){
Field f = fields[i];
System.out.println("Name = "+ f.getName());
System.out.println("Decl class = "+ f.getDeclaringClass());
System.out.println("Type = "+ f.getType());
int mod = f.getModifiers();
System.out.println("modifiers = " + Modifier.toString(mod));
System.out.println("-----------------------------");
}
}
catch(Exception e){
}
}
//execute special method using the reflect
public void ExceMethod(){
try{
Class cl1 = Class.forName("com.HP.DBDAO");
Class partypes[] = new Class[2];
partypes[0] = Integer.TYPE;
partypes[1] = Integer.TYPE;
Method meth = cl1.getMethod("add", partypes);
DBDAO dbdao = new DBDAO();
Object arglist[] = new Object[2];
arglist[0] = new Integer(37);
arglist[1] = new Integer(47);
Object retobj = meth.invoke(dbdao, arglist);
Integer retval = (Integer)retobj;
System.out.println(retval.intValue());
}
catch(Exception e){
}
}
//execute the constructor
public void ExceConstructor(){
try{
Class cl1 = Class.forName("com.HP.DBDAO");
Class partype[] = new Class[2];
partype[0] = Integer.TYPE;
partype[1] = Integer.TYPE;
Constructor con = cl1.getConstructor(partype);
Constructor cons = cl1.getConstructor(partype);
Object arglist[] = new Object[2];
arglist[0] = new Integer(2);
arglist[1] = new Integer(3);
Object retobj = cons.newInstance(arglist);
}
catch(Exception e){
}
}
//set special field when the class is loaded
public void SetField(){
try{
Class cl1 = Class.forName("com.HP.DBDAO");
Field fld = cl1.getField("dou");
DBDAO dbdao = new DBDAO();
System.out.println(" dou = "+ dbdao.dou);
fld.setDouble(dbdao, 16.17);
System.out.println(" dou = "+ dbdao.dou);
}
catch(Exception e){
}
}
//using Array and String
public void ArrayWString(){
try{
Class cl1 = Class.forName("java.lang.String");
Object Arr = Array.newInstance(cl1, 10);
Array.set(Arr,5,"this is a test");
String s = (String) Array.get(Arr, 5);
System.out.println(s);
}
catch(Exception e){
}
}
public void ArrayMutiString(){
int dims[] = new int[]{5, 10, 15};
Object arr = Array.newInstance(Integer.TYPE, dims);
Object arrobj = Array.get(arr, 3);
Class cls = arrobj.getClass().getComponentType();
System.out.println(cls);
arrobj = Array.get(arrobj, 5);
Array.setInt(arrobj, 10, 37);
int arrcast[][][] = (int[][][]) arr;
System.out.println(arrcast[3][5][10]);
}
}
package com.HP;
import java.sql.*;
public class DBDAO {
private double d;
public static final int i = 37;
String s = "testing";
public double dou = 12.43;
public DBDAO(){
}
public DBDAO(int a,int b){
System.out.println("a = "+ a + " b = "+ b);
}
public int add(int b,int c){
return b+c;
}
public Connection GetConnection() throws ClassNotFoundException, SQLException{
Class.forName("oracle.jdbc.OracleDriver");
return DriverManager.getConnection("jdbc:oracle:thin:@16.173.234.74:1521:sisdcs05","liferay","liferay");
}
public ResultSet GetResultSet(String sql){
Connection con = null;
Statement ste = null;
ResultSet rs = null;
try {
con = this.GetConnection();
ste = con.createStatement();
rs = ste.executeQuery(sql);
}
catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
finally{
}
return rs;
}
}
分享到:
相关推荐
java.lang.reflect.Proxy 学习资料 讲解 例子 源码 java.lang.reflect.Proxy 学习资料 讲解 例子 源码 java.lang.reflect.Proxy 学习资料 讲解 例子 源码
总的来说,.NET反编译工具Reflect是.NET开发者不可或缺的利器,它能够帮助我们解密程序的内部运作,提升我们的学习和调试效率。在尊重他人知识产权的前提下,合理利用Reflect,可以让我们在编程世界中走得更远。
在编程领域,`reflect` 是一个非常重要的概念,特别是在诸如 Go、Python 和 Java 等高级语言中。这个概念允许程序在...学习和理解反射原理以及如何安全有效地使用 `reflect` 包,是提升 Go 语言编程能力的关键一步。
在前端开发领域,"Reflect Metadata" 是一个关键的工具,尤其在使用TypeScript或ES6及以上版本时。这个"前端项目-reflect-metadata...通过深入学习和实践,开发者可以充分利用这一特性来提升代码的可扩展性和可维护性。
在Android开发中,实现独特的视觉效果是提升用户体验的重要手段之一,"android 字体倒影Reflect"就是一个这样...通过学习和实践这样的例子,开发者可以提升自己的Android UI定制能力,为用户创造更具吸引力的界面体验。
总之,"cpp-reflect在C++17中轻松实现反射和序列化"是一个深入了解C++高级特性的主题,对于那些寻求提高代码效率和扩展性的开发者来说,是一个不容错过的学习资源。通过实践这个项目,开发者可以锻炼自己的模板元...
标题中的"reflect-2.0.0.zip"可能是指一个包含反射库的版本2.0.0的压缩文件。在编程中,反射是Java、Python、C#等面向对象语言的一种高级特性,允许运行时检查类、接口、字段和方法的信息,甚至能够动态调用方法和...
免费共享,很详细的介绍了反射机制的原理,适合追根究底的java学习者
总的来说,JDK 1.8的`sun.reflect`和`unsafe`扩展提供了更强大的反射和底层操作能力,而源码的公开则为开发者提供了深入学习和优化代码的机会。通过阅读源码和相关文档,开发者可以更好地理解和利用这些特性,提升...
Java中的反射(Reflect)是Java语言的一个重要特性,它允许运行时访问类的信息,包括类名、属性、方法等,并可以动态地创建对象和调用方法。...在学习和使用反射时,一定要注意其潜在的风险,同时充分利用其带来的便利。
在"reflect demo good"这个主题中,我们主要探讨的是如何有效地利用Java反射进行编程,以及其在实际开发中的应用。 在Java中,`java.lang.reflect`包提供了对反射的支持。`Class`对象是反射的核心,它代表了运行时...
"Reflect .NET"是一款强大的.NET框架反编译工具,它允许开发者查看并理解.NET程序集(dll或exe)内部...尽管提供的版本可能不是最新,但Reflect .NET依然是一款值得学习和使用的工具,对于提升.NET开发技能有很大帮助。
在给定的"HLSCubeMapping"文件中,可能包含了实现这些功能的示例代码或教程,供学习者参考和实践。 总之,HLSL立方体环境贴图和反射是3D图形编程的重要组成部分,它们能显著提升场景的视觉质量。通过理解并熟练运用...
深入学习Java反射,我们需要理解以下几个关键概念: 1. **Field**: 表示类的成员变量,可以通过`Class`对象的`getFields()`或`getDeclaredFields()`获取。可以使用`set()`和`get()`方法来访问和修改这些字段的值。 ...
Java反射机制是Java编程语言...通过这个压缩包的学习,初学者可以了解到Java反射的基础知识,而有经验的开发者则可以回顾反射的用法,加深理解。实践中,熟练掌握反射机制有助于解决许多复杂的问题,提高代码的灵活性。
这个"**golang_reflect_practise.rar**"压缩包包含的项目"Proj_reflect_practise"显然是为了帮助学习者实践和理解Go语言中的反射机制。下面我们将深入探讨反射的概念,以及如何在Go中进行反射操作。 ### 反射基础 ...
这对于调试、学习第三方库、修复错误或者查找安全漏洞等任务来说,是非常有价值的。然而,需要注意的是,由于反编译过程的复杂性,生成的源代码可能不会与原始源代码完全一致,可能会丢失注释、变量名和某些复杂语法...
在Go语言中,reflect包提供了对反射的支持,让我们能够动态地获取类型信息,并进行相应的操作。本篇文章将深入探讨如何在Go语言中使用reflect包进行反射实践,帮助你更好地理解和应用这个功能。 首先,我们要理解...
Java反射机制是Java编程语言中的一个重要特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在本教程中,我们将深入...请参考`java_base10_reflect.ppt`来深入学习这一强大而复杂的主题。