在Java中动态设置类实例变量

时间:2018-12-03 06:12:52

标签: java

嗨,我正在一个项目中工作,该项目具有作为类实例的变量。问题在于,取决于用户选择哪个实例变量,该变量可能属于这些类。

当变量可以是一个类或另一个类时,如何将其分配给一个类的实例?

例如,

//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
}

谢谢!

2 个答案:

答案 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;
    // ...
} 

但这通常是代码设计有问题的迹象。