通常,在一个范围中不可能将一个变量(一个标识符)用作两个或多个对象。我的意思是以下程序无效:
public void HashMachine() {
ClassA MyObj;
//Some functions on MyObj here
ClassB MyObj;
//Some other functions on the new MyObj here.
}
,但我想知道在不同情况下是否可以将单个变量用作两个不同的对象,如下所示:
public void HashMachine(int ObjType) {
switch(ObjType){
case 1:
ClassA MyObj;
//Some functions here for this MyObj
break;
case 2:
ClassB MyObj;
//some other functions for this MyObj
break;
}
}
不幸的是,以上程序也是错误的,我无法运行。
所以,这是我的问题:
我可以将一个标识符(一个变量)用于一个范围中的两个不同对象吗?(每个针对特定情况/条件)。
为什么我要这样做?
- 我认为,以这种方式,程序比您必须使用不同变量的表单
- 当我想写一个Java卡小程序时,在Java卡中,在不存在的垃圾收集器中,最好拥有少对象和变量。
您不能在同一范围内两次使用相同的名称。但是,您可以在案例语句中创建新的范围,您可以在其中再次使用该名称。例如:
switch(ObjType)
{
case 1:
{
ClassA MyObj;
//some code
}
break;
case 2:
{
ClassB MyObj;
//some code
}
}
在这里,ClassA MyObj
到程序reacehs第二个案例语句时的范围不超出范围,因此ClassB MyObj
是合法的。
是。你可以这样做。这是抽象的概念。您可以在下面喜欢
public interface MyInterface{...}
public class ClassA implements MyInterface {...}
public class ClassB implements MyInterface {...}
然后,您可以通过具有MyInterface
的参考对象来参考ClassA
或ClassB
类的对象。
MyInterface MyObj;
switch(ObjType){
case 1:
MyObj = new ClassA();
//Some functions here
break;
case 2:
MyObj = new ClassB();
//some other functions
break;
}
Das Louis在他的示例中提供了另一个选择。
我认为您正在寻找的是联合。 但是,它在Java中不存在。我可以找到这个链接,我希望对您有用http://lambda-the-the---------------org/node/2694#comment-40453
我认为以这种方式该程序比您必须的表格要短 使用不同的变量
也许可以,但是可读性?
我想编写一个Java卡小程序,在Java卡中,不存在垃圾收集器,最好拥有对象和变量。
我不确定我的句子是否正确理解。
得出结论,我强烈建议您不要为您的代码添加歧义