如何设置将在类声明中使用的输入参数?
我有一个抽象类 A
,有 1 个名为 public int get(int x, int y)
的方法。
类 B
、C
、D
有 1 个方法,它们都是相同的,并且它们扩展为抽象类 A
。
在类 Car
中,Car
构造函数接收字符串参数 type
,该参数应用于决定 B
中的哪一个, C
, D
必须在类中使用。
显然,我使用基于 type
的 if...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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用接口/抽象类作为构造函数中的参数,而不是使用字符串。
然后在其他地方:
这称为依赖注入。
You could use the interface / abstract class as an argument in the constructor instead of using a String.
And then elsewhere:
This is called dependency injection.
您可以使用
Class.forName(String)
获取Class
对象,然后使用newInstance()
实例化它You can use
Class.forName(String)
to get aClass
object and then instantiate it usingnewInstance()