如何设置将在类声明中使用的输入参数?

发布于 2024-12-04 10:04:10 字数 597 浏览 0 评论 0原文

我有一个抽象类 A,有 1 个名为 public int get(int x, int y) 的方法。

BCD 有 1 个方法,它们都是相同的,并且它们扩展为抽象类 A

在类 Car 中,Car 构造函数接收字符串参数 type,该参数应用于决定 B 中的哪一个, C, D 必须在类中使用。

显然,我使用基于 typeif...else 条件语句来执行此操作。

所以代码看起来像

if(type.equals("B")){
    A = new B();
} else if(type.equals("C")){
    A = new C();
}  //and so on..

有没有什么优雅的方法可以让我使用字符串参数,就像决定使用 3 个类中的哪一个一样?

I have an abstract class A with 1 method called public int get(int x, int y).

Classes B,C,D have 1 method which are all same and they extends to the abstract class A.

In a class Car, the Car constructor receives String argument type that should be used to decide which one of B, C, D have to be used in the class.

Apparently, I am using if...else conditional statements based on the type to do it.

So the codes look like

if(type.equals("B")){
    A = new B();
} else if(type.equals("C")){
    A = new C();
}  //and so on..

Is there any elegant way that I can use string argument just as it is to decide which one of 3 classes to use?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

分开我的手 2024-12-11 10:04:10

您可以使用接口/抽象类作为构造函数中的参数,而不是使用字符串。

public Car(A a) { this.a = a; }

然后在其他地方:

B b = new B();
new Car(b);

这称为依赖注入

You could use the interface / abstract class as an argument in the constructor instead of using a String.

public Car(A a) { this.a = a; }

And then elsewhere:

B b = new B();
new Car(b);

This is called dependency injection.

我要还你自由 2024-12-11 10:04:10

您可以使用 Class.forName(String) 获取 Class 对象,然后使用 newInstance() 实例化它

You can use Class.forName(String) to get a Class object and then instantiate it using newInstance()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文