java - 通过将对象作为参数传递来在方法中使用对象
问题描述
我正面临涉及类和方法的情况。
为简单起见,假设您有 2 个类:A 和 B
在 A 类中,我有一个名为“jumpOnOtherClass”的方法。在 B 类中,我有另一个方法叫做“doThings”。
我希望类 A 方法将任何类的任何对象作为参数,以便它首先检查对象是否为空(因此它可以创建传递对象的新实例),然后执行对象的方法班级。
这是一个示例代码:
class MyMainClass
{
private A objectA = new A();
private B objectB;
public void main()
{
this.objectA.jumpOnOtherClass(this.objectB,"doThings");
}
}
class A
{
public void jumpOnOtherClass(Object objectFromAnyClass, String methodToInvoke)
{
if(objectFromAnyClass == null) objectFromAnyClass = new DefaultConstructorOfB();
objectFromAnyClass.getMethod(methodToInvoke);
}
}
class B
{
public void doThings()
{
//Do some stuff here
}
}
我知道有例外需要考虑,但对于示例,我们假设类和方法存在并且被发现:)
我用“java.lang.reflect”尝试了一些东西,但这似乎不是实现我尝试做的事情的好方法......
任何帮助都会非常好!
感谢,并有一个愉快的一天!
解决方案
我不完全确定我理解这个问题,但看起来您可能正在寻找一种方法来区分最初作为对象传递的类?您可以使用 instanceof 关键字,然后冒一些转换异常的风险
class MyMainClass
{
private A objectA = new A();
private B objectB;
public void main()
{
this.objectA.jumpOnOtherClass(this.objectB,"doThings");
}
}
class A
{
public void jumpOnOtherClass(Object objectFromAnyClass, String methodToInvoke)
{
if(objectFromAnyClass == null) objectFromAnyClass = new DefaultConstructorOfB();
else if (objectFromAnyClass instanceof B) {
if (methodToInvoke.equals("doThings"))
((B) objectFromAnyClass).doThings();
}
}
}
class B
{
public void doThings()
{
//Do some stuff here
}
}
推荐阅读
- vba - 使用 Find 方法从另一个工作表中搜索字符串
- c# - Sys.WebForms.PageRequestManager.getInstance() 多次调用(每次请求递增)
- selenium - 错误构建 VSTS - VSTest TASK - OpenQA.Selenium.WebDriverException:未知错误:找不到 Chrome 二进制文件
- azure - 我无法在 Azure blob 容器中更新 Intranet 站点的 html 中的元数据
- c++ - 错误代码:C2661:没有重载函数需要 6 个参数
- java - 如果多次检查正确的单选按钮,则停止分数增加
- symfony - Symfony 4 / Doctrine 查询:返回值必须是
- nginx - 在 nginx 上的同一域上运行两个 Web 应用程序时出现问题
- ruby-on-rails - 用大型 ruby/json 文件填充 db 的最佳方法?
- vba - Sendkeys 没有正确的焦点