嗨,我正在一个项目中工作,该项目具有作为类实例的变量。问题在于,取决于用户选择哪个实例变量,该变量可能属于这些类。
当变量可以是一个类或另一个类时,如何将其分配给一个类的实例?
例如,
//I don't know if this variable is going to be of type class 1 or class 2
//at this point any suggestions?
Class1 var1;
if(x == true)
{
var1 = new Class1
}
else
{
var1 = new Class2
}
谢谢!
答案 0 :(得分:2)
理想情况下,您应该定义json_data = json.dumps({'username': 'hello'})
response = self.client.post(reverse('ajax_view'), data=json_data)
和Class1
都实现的某些接口。因此,例如,您的Class2
定义可能如下所示:
Class1
处理原始问题的一种好方法是使用工厂模式:
public class Class1 implements MyInterface {
// ...
}
然后,提供一些布尔输入,您可以使用以下方法获取正确的实例:
public class ClassFactory {
public static MyInterface getClass(boolean type) {
if (x) {
return new Class1();
}
else {
return new Class2();
}
}
}
工厂模式是许多设计模式之一,可用于很好地构造代码,并使此类问题更易于解决。
答案 1 :(得分:1)
您可以将变量定义为
Object var1;
if(x == true)
{
var1 = new Class1();
}
else
{
var1 = new Class2();
}
然后在需要时将其投射
if(var1 instanceof Class1){
Class1 v = (Class1)var1;
// ...
} else if(var1 instanceof Class2){
Class2 v = (Class2)var1;
// ...
}
但这通常是代码设计有问题的迹象。