gpt4 book ai didi

java - 通过将类名和方法名作为参数传递来运行 java 方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:45:43 33 4
gpt4 key购买 nike

我正在尝试制作一个程序,当类名和方法名作为字符串参数传递给调用者时执行特定的方法。考虑下面的代码。我有一个 CarBean 类:

public class CarBean {

private String brand;
private String color;

/**
* @return the brand
*/
public String getBrand() {
return brand;
}

/**
* @param the brand to set
*/
public void setBrand(String brand) {
this.brand= brand;
}

/**
* @return the color
*/
public String getColor() {
return color;
}

/**
* @param the color to set
*/
public void setColor(String color) {
this.color= color;
}

}

现在我想通过如下方法运行它:

runTheMehod("CarBean","getColor");

runTheMethod 的实现是这样的:

public runTheMethod(String className, String methodName){
try {
Object carObj = Class.forName(className).newInstance();
//What to do now???
} catch (InstantiationException | IllegalAccessException
| ClassNotFoundException e) {
e.printStackTrace();
}
}

我可以使用类名获取对象。现在我需要将它转换为 CarBean 对象,然后我可以运行它的方法。所以想知道如何在运行时转换它,因为每次调用的类名都不同。另外,我可以在尝试调用之前检查类是否有特定方法吗?

如有任何建议,我们将不胜感激。另外,我很想知道是否有更好的方法来做到这一点。

最佳答案

What to do now???

您现在可以像这样调用 carObj 上的方法:

Method method = carObj.getClass().getMethod(methodName);
method.invoke(carObj);

另见:

Method.invoke

关于java - 通过将类名和方法名作为参数传递来运行 java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26919701/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com