Java反射:根据方法名动态调用方法,解决商品动态属性取值问题。

public class Goods{

private String goodsName;

private String attr1;

private String attr2;

private String attr3;

private String attr4;

.........

private String attr20;

setter/getter方法

}

在数据库表goods中,已知该商品的属性个数N(满足:N=5,attr1—attr5有值,attr6-attr20为空)。问如何取出每个商品的属性值:

方法一:

取出20属性值

String attr1=goods.getAttr1();

String attr2=goods.getAttr2();

........

String attr20=goods.getAttr20();

方法二:

用反射根据方法名字取值
attr= goods.getDeclaredMethod("attr" +i);

涉及的反射知识,请自行查阅其他资料,这里只提供动态商品属性取值的方案。

时间: 2024-12-20 23:35:16

Java反射:根据方法名动态调用方法,解决商品动态属性取值问题。的相关文章

Java 通过对象方法名动态调用方法

public class TestReflection {          /**      * Reflect test      * */     public static void main(String[] args) {            ReportObject rObject = new ReportObject();            Class rObjectClass = rObject.getClass();            try {          

根据方法名称动态调用方法

主要通过Java反射机制实现. 例如: public class NewClass { private static final NewClass newClass = new NewClass(); public void doTest(String methodName){ try { newClass.getClass().getMethod(methodName, new Class[]{}).invoke(newClass, new Object[]{}); } catch (Exce

Spring AOP根据JdbcTemplate方法名动态设置数据源

说明:现在的场景是,采用数据库(Mysql)复制(binlog)的方式在两台不同服务器部署并配置主从(Master-Slave)关系: 并需要程序上的数据操作方法来访问不同的数据库,比如,update方法访问主数据库服务器,query方法访问从数据库服务器. 即把"增删改"和"查"分开访问两台服务器,当然两台服务器的数据库同步事先已经配置好. 然而程序是早已完成的使用Spring JdbcTemplate的架构,如何在不修改任何源代码的情况下达到<本文标题&g

.Net——动态调用方法

一,使用InvokeMember 思路:在类型的type的对象上调用InvokeMember方法,传递要在其上调用方法的对象,并指定BindingFlags为InvokeMethod.根据方法签名,可能还需要传递参数. 示例(对普通方法和对静态方法的调用): #region 动态调用方法--使用InvokeMember对一般方法的调用 //Type t = typeof(Calculator); //Calculator c = new Calculator(1, 2); //int resul

Struts2 动态调用方法

struts2动态调用方法有两种方式 方式一:用通配符进行调用: Action方法: 1 package com.bjyinfu.struts.actions; 2 3 public class CatchDynamicMethod { 4 5 public String doFirst(){ 6 System.out.println("执行doFirst方法"); 7 return "success"; 8 } 9 10 public String doSecon

自学ios开发-------Objective-c动态调用方法笔记

OC动态调用OC的函数调用是消息发送模式,即在运行时动态调用函数,OC在编译期可以调用任何函数,只要声明过这个函数,就不会报错,在真正运行的时候才会根据函数的名称找到对应的函数来调用[ASPerson SayHello] 编译时RunTime会将上述代码转化为objc_msgSend(ASPerson @selector(SayHello)) 所有定义的类型都继承自NSObject,NSObject中存在一个指向Class的指针 Class是指向objc_class结构的函数指针; struct

php中怎么使用call_user_func动态调用方法

php中可使用call_user_func进行方法的动态调用,可以动态调用普通函数.类方法以及带参数的类方法1.定义一个普通函数getCurrentDate,用于获取今天日期.call_user_func带上的参数为要被调用的函数名fucntion getCurrentDate(){echo 'getCurrentDate:' . date('Y-m-d');}call_user_func('getCurrentDate'); 程序会自动执行getCurrentDate函数并获得期望的结果get

struts_2_Action类中方法的动态调用

(一)直接调用方法(不推荐使用) 1)Action类: private String savePath; public String getSavePath() { return savePath; } public void setSavePath(String savePath) { this.savePath = savePath; } public String other() { savePath = "other"; return "success";

java反射机制中的动态代理

java反射机制中的动态代理 动态代理模式及其使用 步骤1:定义一个接口 //接口 interface Subject{ void action(); } 步骤2:定义一个接口的实现类,也就是被代理类 //被代理类 class RealSubject implements Subject { @Override public void action() { System.out.println("我是被代理类,请执行我"); } } 步骤3:定义一个实现InvocationHandle