初始化对象,然后根据if语句中的值创建它
Initialize object and create it later depending on value in if statement
我有类似的Java代码,其中包含许多if-else语句:
if(...){
Object1 obj = new Object1();
String text = obj.getString();
int number = obj.getInt();
//do something
}else if (...){
Object2 obj = new Object2();
String text = obj.getString();
int number = obj.getInt();
//do something
...
有可能以这种方式编写代码吗:
<something> obj; //<- ?
if(..)
obj = new Object1;
else if(..)
obj = new Object2;
...
String text = obj.getString();
int number = obj.getInt();
//do something
谢谢你的帮助。
PS:你可以用C++编写解决方案;我会为java 找出答案
PS(2(:很抱歉英语不好-这不是我的主要语言
上面的替代方案是接口
public interface Ibase {
String getString();
int getInt();
}
然后您的两个对象将实现该接口,以确保它们具有可用的方法。
public class Object1 implements IBase {
public String getString() {
return "string";
}
public int getInt() {
return 0;
}
}
然后像上面一样可以使用
IBase object = null
if(option)
object = new Object1()
else
object = new Object2();
object.getString();
object.getInt();
把接口想象成子类必须遵守的契约。
在两者中,都需要一个基类。对于这两者,您最初都可以有一个NULL
引用(Java(或指针(C++(,然后设置:
BaseObject* pBase = NULL;
if (...)
pBase = new Object1;
else
pBase = new Object2;
在Java中,它不会有什么不同(缺少asterix和null
而不是NULL
(;
Object obj = null;
if(..)
obj = new Object1();
else if(..)
obj = new Object2();
但是,请注意,对于编译器,obj
的类型是Object
。如果不向下强制转换,就无法应用特定于Object1
或Object2
的方法。
相关文章:
- 尝试使用 indexOf 创建一个 if 语句来检查字符串是否包含字符.有一点麻烦
- 如何从这些语句中的每一个创建不同的函数?
- 是否可以在一个语句中创建对象并调用方法?
- 在 c++ 中创建递归 for 语句
- 如何访问在 if 语句内、外部创建的指针
- 如何预先分配空类对象,然后在if语句的大括号中创建该对象
- 是否可以基于 C 或 C++ 中的 JSON 动态创建 if 语句
- 如何仅使用循环/控制语句和两个cout语句创建一个倒三角:一个输出“#”和一个输出' n'
- C 中的sqlite3创建语句和外键
- 如何创建包含 goto 语句的主菜单函数
- 创建指向while语句中的指针的指针
- 我应该用switch语句从变量创建C++模板化对象吗
- 如何使用C++模板创建具有任意数量案例的开关语句生成器
- 如何通过 MySQL++ 库创建和使用 MySQL 语句
- 是否可以使程序的执行跳过 fprintf-语句/如何创建我自己的 fprintf 函数
- 在 c++ 中从字符串创建类以避免大型 switch 语句
- 创建开关语句时出现问题
- 在条件c++语句中创建对象
- 需要帮助创建带有switch语句的函数和错误
- Mysql创建过程(创建语句)在qt