猿问

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

我有class A和。class Bclass C


在class C中,我声明变量如下:


private A a;

private B b;

private ? thirdVariable;

我想声明数据类型可以是 A 或 B的第三个变量。这样我就可以根据我的意愿分配这个变量的值a或值。b


HUX布斯
浏览 213回答 3
3回答

慕尼黑8549860

如果 A 和 B 之间没有关系,则不能这样做。如果你想这样做,那么你应该由 A 和 B 扩展的接口/类。class X{}class A extends X{}class B extends X{}private X thirdVariable;如果您真的想使用 Generic,请在 C 类中使用泛型构造函数,然后A/B根据下面的泛型传递对象。class C<T> {&nbsp; &nbsp; private T thirdVariable;&nbsp; &nbsp; C(T t) {&nbsp; &nbsp; &nbsp; &nbsp; thirdVariable = t;&nbsp; &nbsp; }}当您创建 C 的对象时,您可以指定并传递对象的类型,如下所示。&nbsp; &nbsp; A a = new A();&nbsp; &nbsp; C<A> c1 = new C<A>(a);&nbsp; &nbsp; B b = new B();&nbsp; &nbsp; C<B> c2 = new C<B>(b);

德玛西亚99

您可以Polymorphism与 an(abstract) class或 an一起使用InterfaceInterface:public Interface Parent{&nbsp; &nbsp; &nbsp; &nbsp; }public class A implements Parent {&nbsp; &nbsp; &nbsp; &nbsp; }public class B implements Parent {&nbsp; &nbsp; &nbsp; &nbsp; }public class C {&nbsp; &nbsp; private A a;&nbsp; &nbsp; private B b;&nbsp; &nbsp; private Parent thirdVariable;}(abstract) class:摘要是可选的,取决于您必须制作的设计和功能public (abstract) class Parent{&nbsp; &nbsp; &nbsp; &nbsp; }public class A extends Parent {&nbsp; &nbsp; &nbsp; &nbsp; }public class B extends Parent {&nbsp; &nbsp; &nbsp; &nbsp; }public class C {&nbsp; &nbsp; private A a;&nbsp; &nbsp; private B b;&nbsp; &nbsp; private Parent thirdVariable;}

茅侃侃

您可以创建一个(可能是抽象的)超类(让我们称之为class X)并创建两者A并B从中扩展。然后,您的第三个变量可以声明为:private&nbsp;X&nbsp;thirdVariable;类似地,您可以创建一个接口(我们称之为它interface Y)并制作A并B实现它。然后,您的第三个变量可以声明为:private&nbsp;Y&nbsp;thirdVariable;所以基本上你想充分利用多态性,因为泛型不够灵活,无法表达你想要的类型关系。
随时随地看视频慕课网APP

相关分类

Java
我要回答