如何使用客户端调用的另一个类中的方法

Posted

技术标签:

【中文标题】如何使用客户端调用的另一个类中的方法【英文标题】:How to use methods from another class, called by the client 【发布时间】:2021-12-27 07:51:12 【问题描述】:

我正在制作一个程序,让用户调用一个类,就像它需要一个字符串输入,然后调用该类的 run() 方法,有什么办法吗?我希望是这样的:

String inp=new Scanner(System.in).nextLine();
Class cl=new Class(inp);
cl.run();

我知道代码不正确,但这是我的主要想法

【问题讨论】:

【参考方案1】:

按名称创建和使用类需要一些先决条件:

必须使用类的全名,包括包名。 你需要知道构造函数的参数。通常无参数构造函数用于此类用例。 (可选)您需要该类必须实现的接口,该接口声明方法“run”(或您要使用的任何其他方法)。

一个带有Runnable子类的例子:

    String className = "some.classname.comes.from.Client";

    Class<Runnable> clazz = (Class<Runnable>) Class.forName(className);
    Runnable instance = clazz.getConstructor().newInstance();
    instance.run();

如果没有通用接口,可以使用反射调用方法:

    Class<Object> clazz = (Class<Object>) Class.forName(className);
    Object instance = clazz.getConstructor().newInstance();
    clazz.getMethod("run").invoke(instance);

或使用带参数的方法:

    Integer p1 = 1;
    int p2 = 2;
    clazz.getMethod("methodWithParams", Integer.class, Integer.TYPE).invoke(instance, p1, p2);

【讨论】:

如果要使用参数怎么办? @SameerAchhab:我添加了一个带参数的示例【参考方案2】:

字符串变量不能作为类的引用。 改变对象之类的东西取决于输入 你可以使用多态和设计模式(Factory Pattern)

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于如何使用客户端调用的另一个类中的方法的主要内容,如果未能解决你的问题,请参考以下文章

如何从同一类中的另一个方法检索最后插入的 id?

从同一个类中的另一个方法调用 main 方法

Python 3 - 调用方法来更改类中的另一个方法

使用 System.exit() 调用同一类中的另一个方法

如何从 React.js 中的另一个类组件调用方法

如何从Angular 6中的另一个类调用类中的函数?