java在if/else块中声明变量
我正在编写一个程序,如果第一个命令行参数是“-1”,则创建某个类实例的变量,否则创建其子类的实例。父类和子类共享所有相同的方法和方法名称,但子类会覆盖其中一些方法的父类。换句话说,无论我使用哪个类,声明后程序的其余部分都是完全相同的。以下是我目前的声明:
if(args[0].compareTo("-1") == 0){
BST Tree = new BST();
}
else{
RBT Tree = new RBT();
}
当以后引用树时,会引发“无法解决”错误。没有一堆冗余代码,这个问题有什么解决方案吗?很明显,我可以将整个主函数放在这些if/else块中,但如果有更简洁的解决方案,我希望避免这种情况
# 1 楼答案
这是因为您还可以在语句的范围内声明变量
Tree
。在这些作用域之外,Tree
无法再解析可以在if语句之前声明
Tree
:# 2 楼答案
在
if
块之前声明Tree
(以便它在if
块之后具有可见性)。像或使用三元格式
另外,按照惯例,Java变量名以小写字母开头,因此我更喜欢
tree
而不是Tree
(看起来像类名)# 3 楼答案
在if语句的范围之外声明变量
这假设
RBT
扩展了BST