通过反射对任意class类中方法赋值的方式

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import java.lang.reflect.Method;

@Component
public class SetPlatformUtils {
private static final CoreServiceType c = CoreServiceType.getInstance();

public void setVal(Object obj, String methodName, String platform){
//获取obj代表的实体类class对象
Class clazz = obj.getClass();
Method method = null;
try {
//获取class对象中的指定的方法
method = clazz.getMethod(methodName, String.class);
//给方法赋值
if (StringUtils.isBlank(platform)){
method.invoke(obj,c.CODE.get("1"));
}else{
method.invoke(obj, c.CODE.get(platform));
}
}
catch (Exception e) {
logger.error("存储二级分类的反射工具类出错,obj:{},methodName:{},platform:{},",obj,methodName,platform);
}
}
}

原文地址:https://www.cnblogs.com/bin-zhao/p/11609374.html

时间: 2024-08-08 08:33:44

通过反射对任意class类中方法赋值的方式的相关文章

C#反射调用程序集类中方法

建立类 class OperatorClass { /// <summary> /// 加法 /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> /// public static int Add(int x, int y) { r

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";

Makefile中变量赋值的方式

Makefile中的"="":="."?="和"+="区别是:"="是直接给变量赋值.":="是将":="右边中包含的变量直接展开给左边的变量赋值."?="是在该变量没有被赋值 的情况下为其赋值."+="是给该变量追加值.例:a = 1b = 2c := $(a) 3d = 4d ?= 5b += 6结果:a=1c=1 3d=4

android开发中关于继承activity类中方法的调用

android开发中关于继承activity类中的函数,不能在其他类中调用其方法. MainActivity.java package com.example.testmain; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState)

关于一个类中方法的调用

大家都知道:对象是对客观事物的抽象,类是对对象的抽象,对象是类的实例. 在类中来调用方法.不过调用方法也有种种的情况.(如下几种情况) 情况一:同一个类中的两个方法相互调用 1.如果两个方法都是普通的方法,也就是非静态的方法的话,是可以直接调用的.例 ( public void a(){ system.out.println(“内容”): b(): } public void b(){ system.out.println(“内容2”): } ) 2.如果两个方法都是静态的方法,那么也是可以直接

关于类中方法的调用

同一个类中的两个方法相互调用: 1.两种方法都是普通的方法:可以直接用方法名调用 2.两种方法都是静态方法:可以直接用方法名调用 3.一种方法为静态,一种方法为普通: ①在静态方法中调用普通方法:不可以直接使用,需要创建对象 ②在普通方法中调用静态方法:可以直接用方法名调用

关于一个类中方法调用

大家都知道:对象是对客观事物的抽象,类是对对象的抽象,对象是类的实例. 在类中来调用方法,不过调用方法也有种种的情况. 在同一个类中的两个方法相互调用; 1.如果两个方法都是普通方法,那么可以直接用 public void eat(){ System.out.println("内容1"); sleep(); } public void sleep(){ System.out.println("内容2"); } 2.如果两个方法都是静态方法,那么可以直接用 publi

Yii CDbCriteria类中方法

$criteria = new CDbCriteria; //select $criteria->select = '*';//默认* $criteria->select = 'id,name';//指定的字段 $criteria->select = 't.*,t.id,t.name';//连接查询时,第一个表as t,所以用t.* $criteria->distinct = FALSE; //是否唯一查询 //join $criteria->join = 'left joi

C#实现调用Java类中方法

基本思路: 用C#实现调用Java编写的类中的方法:重点是将Java编写的程序打包成Jar,然后使用开源工具IKVM将其转化成DLL控件,在.NET环境下调用. 分为以下步骤: 1.下载JDK6(注:JDK7下可能不支持,建议使用JDK6和Eclipse),进行安装,然后配置环境变量Path,将JDK安装的路径(例如:D:\Program Files\Java\jdk1.6.0_10\bin)添加到Path变量后面,如图所示: 用cmd打开DOS框,输入javac就可以查看是否配置成功,配置成功