导航:首页 > 使用方法 > java反射常用的方法

java反射常用的方法

发布时间:2022-01-07 00:48:00

Ⅰ java反射提基本类型

"""
Method m = c.getMethod("setName", new Class[]{Class.forName("java.lang.String")});
"""
这里可以用Method m = c.getMethod("setName", java.lang.String.class);简单一些,因为它本身是一个可变参数列表;一个class不是需要Class.forName("java.lang.String")这么复杂的,这个还要用反射,相当不好。

而基本类型也是可以用的
如m = c.getMethod("setAge", int.class);

希望对你有帮助,一天一回答送给你了。

Ⅱ Java反射的几个方法区别

1. 通过Object类的getClass方法来获取
java.lang.Object中定义有getClass方法:public final Class getClass()
所有Java对象都具备这个方法,该方法用于返回调用该方法的对象的所属类关联的Class对象,例如:
Date date1 = new Date();
Date date2 = new Date();
Class c1 = date1.getClass();
Class c2 = date2.getClass();
System.out.println(c1.getName());
// java.util.Date
System.out.println(c1 == c2);
// true
上面的代码中,调用Date对象date1的getClass方法将返回用于封装Date类信息的Class对象。
这里调用了Class类的getName方法:public String getName(),这个方法的含义很直观,即返回所封装的类的名称。
需要注意的是,代码中的date1和date2的getClass方法返回了相同的Class对象(c1==c2的值为true)。这是因为,对于相同的类,JVM只会载入一次,而与该类对应的Class对象也只会存在一个,无论该类实例化了多少对象。
另外,需要强调的是,当一个对象被其父类的引用或其实现的接口类型的引用所指向时,getClass方法返回的是与对象实际所属类关联的Class对象。例如:
List list = new ArrayList();
System.out.println(list.getClass().getName()); // java.util.ArrayList
上面的代码中,语句list.getClass()方法返回的是list所指向对象实际所属类java.util.ArrayList对应的 Class对象而并未java.util.List所对应的Class对象。有些时候可以通过这个方法了解一个对象的运行时类型,例如:
HashSet set = new HashSet();
Iterator it = set.iterator();
System.out.println(it.getClass().getName()); //java.util.HashMap$KeyIterator
从代码可以看出,HashSet的iterator方法返回的是实现了Iterator接口的HashMap内部类(KeyIterator)对象。
因为抽象类和接口不可能实例化对象,因此不能通过Object的getClass方法获得与抽象类和接口关联的Class对象。
2. 使用.class的方式
使用类名加“.class”的方式即会返回与该类对应的Class对象。例如:
Class clazz = String.class;
System.out.println(clazz.getName()); // java.lang.String
这个方法可以直接获得与指定类关联的Class对象,而并不需要有该类的对象存在。
3. 使用Class.forName方法
Class有一个着名的static方法forName:public static Class forName(String className) throws ClassNotFoundException
该方法可以根据字符串参数所指定的类名获取与该类关联的Class对象。如果该类还没有被装入,该方法会将该类装入JVM。
该方法声明抛出ClassNotFoundException异常。顾名思义,当该方法无法获取需要装入的类时(例如,在当前类路径中不存在这个类),就会抛出这个异常。

Ⅲ java反射方法调用问题

int是基本类型没错,因此,在用反射调用时,应明确使用Integer才行。
由于参数是从数据库里来的(ResultSet),因此,要看数据库的定义,以及数据库的类型。
比如,对于Oracle 定义的任何数值类型字段,都会返回Decimal对象,由于float类型能运行,推断应该不使用的ORACLE,还是看你的数据库定义吧,实在不行,就要做下面的工作,增加一个TypeConvertor定义,其中实现将数据库返回的对象转换成方法参数所需的类型,针对几种基本数据类型进行简单的转换,就不需要依赖数据库了。

1楼的是想自己做持久类框架??

Ⅳ java反射

Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。

Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。

以下示例使用 Class 对象来显示对象的类名:

void printClassName(Object obj) {
System.out.println("The class of " + obj +
" is " + obj.getClass().getName());
}
还可以使用一个类字面值来获得命名类型(或 void)的 Class 对象。例如:

System.out.println("The name of class Foo is: "+Foo.class.getName());

Ⅳ 说说对java反射的理解,使用反射如何获取一个类的所有方法,使用反射需要注意哪些问题

反射说白了就是可以获得一个类的所有信息,主要包括方法和属性两部分。
1.获得方法包括获得方法的名称,方法的返回类型,方法的访问修饰符,以及通过反射执行这个方法。
2.获得属性包括属性的名称,类型,访问修饰符,以及这个属性的值。
这些获得都有相应的API提供操作。

举个例子:
先定义一个类,有age这个属性,以及age的get和set方法:

public class TestRflectionFather {
public int age =32;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}

然后操作获得所有方法:

import java.lang.reflect.Method;
public class Testmain {
public static void main(String[] args) throws Exception {
Class clazz = Class.forName("TestRflectionFather");
Method[] methods =clazz.getDeclaredMethods();
for(Method me:methods)
{
System.out.println(me.getName());
}
}

}

//最后输出
getAge
setAge

Ⅵ java反射最常用的几个方法

下面给你介绍Java反射常用的2种方法:

  1. 获取javaBean的属性

Ⅶ java反射怎么实现的

Java中反射有如下几种实现方式:
1、通过Class.forName()方法加载字符串,就可以得到该字符串做代表的Class对象。
2、通过类名调用class属性得到该类的Class对象。
例如:Class<?> clazz = String.class也可以得到String类的Class对象。
3、调用实例的getClass()方法。
例如:Date date = new Date();
Class<?> clazz = date.getClass();
通过上边的两句代码就可以得到date实例的Class对象。

Ⅷ java中反射的三种方法是

第一种:通过forName()方法;

第二种:类.class;

第三种:对象.getClass()。

举例如下:

package
test;

public class Demo{

public static void
main(){

Class<?> c1 = null;

Class<?> c2 =
null;

Class<?> c3 =
null;

//三种反射用实例化方式

try{

//最常用的一种形式

c1 =
Class.forName("test.X");

}catch(ClassNotFoundException
e){

e.printStackTrace();

}

//通过Object类中的方法实例化

c2
= new X().getClass();

//通过类.class实例化

c3 =
X.class;

System.out.println("类名:" + c1.getName());
//得到类名

System.out.println("类名:" + c2.getName());
//得到类名

System.out.println("类名:" + c3.getName());
//得到类名

}

}

Ⅸ 利用JAVA反射技术执行一个类的方法

package cn;
import java.lang.reflect.*;
public class SimpleClassDesc {

/**
* @param args
*/
public static void main(String[] args) {
Class type=null;
try
{
System.out.println(args[0]);
type=Class.forName(args[0]);

}catch(Exception e)
{
e.printStackTrace();
}

Class superClass=type.getSuperclass();
if(superClass!=null)
{
System.out.println("extends "+superClass.getCanonicalName());
}
Method[] methods=type.getDeclaredMethods();
for(int i=0;i<methods.length;i++)
{
if(Modifier.isPublic(methods[i].getModifiers()))
{
System.out.println(""+methods[i]);
}
}

}
}
利用java反射机制打印出给定类的直接超类,并列出它所声明的public方法。

Ⅹ java反射应用有哪些

Reflection(反射) 是 Java 程序开发语言的特征之一,它允许运行中(注意是运行时,而非编译时)的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性。例如,使用它能获得 Java 类中各成员的名称并显示出来,能够通过字符串形式的类名称(包括完整包名)反射性地创建类的实例,能够动态执行类方法等。JavaBean 是 reflection 的实际应用之一,它能让一些工具可视化的操作软件组件。这些工具通过 reflection 动态的载入并取得 Java 组件(类) 的属性。Java反射是动态程序设计的基础。Java语言反射提供一种动态链接程序组件的多功能方法。它允许程序创建和控制任何类的对象,无需提前硬编码目标类。这些特性使得反射特别适用于创建以非常普通的方式与对象协作的库。Java reflection 非常有用,它使类和数据结构能按名称动态检索相关信息,并允许在运行着的程序中操作这些信息。Java 的这一特性非常强大,并且是其它一些常用语言,如 C、C++、Fortran 或者 Pascal 等都不具备的。 但反射有两个缺点。第一个是性能问题。用于字段和方法接入时反射要远慢于直接代码。性能问题的程度取决于程序中是如何使用反射的。如果它作为程序运行中相对很少涉及的部分,缓慢的性能将不会是一个问题。即使测试中最坏情况下的计时图显示的反射操作只耗用几微秒。仅反射在性能关键的应用的核心逻辑中使用时性能问题才变得至关重要。 我最近使用反射写了一个Pojo(实体)基类,你可以到我的Csdn博客上查阅该例程。文章地址为: http://blog.csdn.net/CodingMouse/archive/2009/04/11/4064007.aspx

阅读全文

与java反射常用的方法相关的资料

热点内容
黑炭钓鱼最佳方法 浏览:798
如何防止自己变老的方法 浏览:344
55乘101简便计算方法 浏览:646
气体管道的安装方法 浏览:554
全国超级简单的方法作文 浏览:399
芽庄沉香鉴别方法图解 浏览:627
暖气闸门安装方法 浏览:820
企业招商技巧及方法 浏览:639
红薯在家种植方法 浏览:929
用什么方法对付领导给你穿小鞋 浏览:352
羊奶粉食用方法 浏览:928
圆椒坐果的正确方法 浏览:252
用什么方法可以查出妻子出轨 浏览:698
美的电压力锅使用方法指示灯在哪里 浏览:781
电动车霍尔线检测方法 浏览:771
人体详细锻炼方法 浏览:159
不绣钢管道连接方法 浏览:533
自己如何减肥方法 浏览:808
训练武磊的方法 浏览:833
新宝贝破零的技巧方法 浏览:48