导航:首页 > 编程语言 > java反射set方法调用

java反射set方法调用

发布时间:2024-10-05 11:43:48

㈠ 说说对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反射调用属性的set方法时,若属性为int类型,会出错,设置通过get得到的值的getClass为Integer。

Integer可以直接转成int的啊,int是基本类型,去不是继承于object,而integer是类才能用getclass方法。获得之后能够转成int型

㈢ Java如何获得一个对象中所有带set方法的字段(形成Field对象)包括父类的。有现成的工具类

在Java中 是获取不了对象里面的字段的(除非是一些固定写死的字段) ,但是可以利用反射获取set方法,进行赋值
具体可以参考一下代码
/**
*
* @param obj 赋值对象
* @param value 赋值的值
* @throws Exception
*/
public void setMethod(Object obj ,String value) throws Exception{
if (obj == null ) {
return;
}
Method[] methods = obj.getClass().getMethods();
for (int i = 0; i < methods.length; i++) {
Method method = methods[i];
String name = method.getName();
if(name.contains("set")){
method.invoke(obj,value);
}
}

}

㈣ java中的反射,invoke方法详解

就是调用类中的方法,最简单的用法是可以把方法参数化,invoke(class, method)比如你Test类里有一系列名字相似的方法setValue1、setValue2等等。可以把方法名存进数组v[],然后循环里invoke(test,v[i]),就顺序调用了全部setValue

如:publicclass MyTest{publicstaticvoidmain(String[]args) {String[]names={"tom","tim","allen","alice"};

Class<?>clazz=Test.class;try Methodmethod=clazz.getMethod("sayHi",String.class);for(Stringname:names)method.invoke(clazz.newInstance(),name);}catch(NoSuchMethodExceptione)e.printStackTrace();}catch(IllegalAccessExceptie.printStackTrace(}catch(IllegalArgumentException{e.printStackTrace();}catch(InvocationTargetExceptione)e.printStackTrace();}catch(InstantiationExceptione{e.printStackTrace(}classTest{publicvoidsayHi(Stringname){System.out.println("Hi"+name);}

㈤ JAVA从数据库查出来的数据放到实体类想用反射的方法给他们赋值,怎么做

说一个大概思路吧:
1.读取数据:从数据库中读取数据的同时,拿到元数据,即metadata;
2.实例化:通过类名,利用反射 实例你的实体类(类名可以和表名保持一致,这样就不用写额外的
映射了),如果你只是想通过反射赋值的话,你也可以直接new个类;
3.方法调用:通过元数据,利用反射 得到你的set方法(方法名可以和字段名保持一致,否则你要写
出映射关系);

㈥ java中, 怎么调用别的类的私有方法

利用反射即可调用;
简易实例代码如下:
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
* @author thomaslwq
* @version 创建时间:Sep 4, 2012 9:53:49 PM
* 类说明
*/
public class ReflectionTest {

public static void setObjectColor(Object obj) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAcces***ception, InvocationTargetException{
Class cls = obj.getClass();
//获得类的私有方法
Method method = cls.getDeclaredMethod("privateMethod", null);
method.setAccessible(true); //没有设置就会报错
//调用该方法
method.invoke(obj, null);
}
public static void main(String args[]) throws SecurityException, IllegalArgumentException, NoSuchMethodException, IllegalAcces***ception, InvocationTargetException{

setObjectColor(new MyTest());
}
}
//测试类
class MyTest{


public void setMyTest(){
System.out.println("setMyTest");
}
/**
类的私有方法
**/
private void privateMethod(){
System.out.println("调用了 private Method");
}

}

㈦ java反射机制可以调用到私有方法,是不是就破坏了JAVA的卦装性呢。

这是一个很值得探讨的问题,许多人接触反射时,对反射功能之强大都会抱有怀疑,感觉严重破坏了封装的性质。可是,什么是封装,什么是安全呢?
封装,是将具体的实现细节隐藏,而把功能作为整体提供给类的外部使用,也就是说,公有方法能够完成类所具有的功能。当别人使用这个类时,如果通过反射直接调用私有方法,可能根本实现不了类的功能,甚至可能会出错,因此通过反射调用私有方法可以说是没有任何用处的,开发人员没有必要故意去破坏封装好的类。从这点上看,封装性并没有被破坏。
所谓安全,如果意思是保护实现源码不被别人看见,那没有作用。不用反射也能轻易获取源码。
所以我以为反射机制只是提供了一种强大的功能,使得开发者能在封装之外,按照特定的需要实现一些功能。就好比核技术,虽然造核弹很危险吧,但造核电站还是很有用处的(这个比喻似乎不是很恰当,将就将就)。

曾经给朋友讨论过这个问题,感觉解释得不是很清楚,大家一起探讨探讨,看看怎样表述才能更容易理解:)

㈧ 调用一个javabean实例的属性都有哪些方式

JavaBean 是一种普遍应用的 Java 类型,它定义了一个标准的Java类来承载和封装数据。可以调用 JavaBean 实例的属性有以下几种方式:

阅读全文

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

热点内容
aloha防碰撞算法 浏览:312
程序员怎么学习游戏 浏览:223
vue源码二次开发难吗 浏览:306
安卓导航怎么使用苹果carplay 浏览:452
androidcdrom 浏览:594
脑残数学计算法 浏览:985
头像水印源码psd 浏览:156
电话手表什么app可以设置号码 浏览:151
单片机存储器地址容量 浏览:620
javahashmap用法 浏览:946
大数据挖掘算法与模型 浏览:888
大庆服务器的dns地址查询 浏览:977
java反射set方法调用 浏览:876
java发送邮件jar 浏览:486
文件夹隐藏了可以通过地址栏查看 浏览:649
欧洲海外市场加密货币 浏览:973
javalist转换map 浏览:591
androidstudio预览布局 浏览:532
usb文件夹怎么开 浏览:734
究极之月安卓模拟器如何扫描 浏览:37