为了账号安全,请及时绑定邮箱和手机立即绑定

在JAVA中创建灵活数据类型的变量

在JAVA中创建灵活数据类型的变量

HUX布斯 2022-06-08 17:11:48
我有class A和。class Bclass C在class C中,我声明变量如下:private A a;private B b;private ? thirdVariable;我想声明数据类型可以是 A 或 B的第三个变量。这样我就可以根据我的意愿分配这个变量的值a或值。b
查看完整描述

3 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

如果 A 和 B 之间没有关系,则不能这样做。如果你想这样做,那么你应该由 A 和 B 扩展的接口/类。


class X{}


class A extends X{

}


class B extends X{

}


private X thirdVariable;

如果您真的想使用 Generic,请在 C 类中使用泛型构造函数,然后A/B根据下面的泛型传递对象。


class C<T> {

    private T thirdVariable;


    C(T t) {

        thirdVariable = t;

    }

}

当您创建 C 的对象时,您可以指定并传递对象的类型,如下所示。


    A a = new A();

    C<A> c1 = new C<A>(a);

    B b = new B();

    C<B> c2 = new C<B>(b);


查看完整回答
反对 回复 2022-06-08
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

您可以Polymorphism与 an(abstract) class或 an一起使用Interface


Interface:


public Interface Parent{        }


public class A implements Parent {        }


public class B implements Parent {        }


public class C {

    private A a;

    private B b;

    private Parent thirdVariable;

}

(abstract) class:摘要是可选的,取决于您必须制作的设计和功能


public (abstract) class Parent{        }


public class A extends Parent {        }


public class B extends Parent {        }


public class C {

    private A a;

    private B b;

    private Parent thirdVariable;

}


查看完整回答
反对 回复 2022-06-08
?
茅侃侃

TA贡献1842条经验 获得超21个赞

您可以创建一个(可能是抽象的)超类(让我们称之为class X)并创建两者AB从中扩展。然后,您的第三个变量可以声明为:

private X thirdVariable;

类似地,您可以创建一个接口(我们称之为它interface Y)并制作AB实现它。然后,您的第三个变量可以声明为:

private Y thirdVariable;

所以基本上你想充分利用多态性,因为泛型不够灵活,无法表达你想要的类型关系。


查看完整回答
反对 回复 2022-06-08
  • 3 回答
  • 0 关注
  • 212 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信