当前位置: 首页 > 知识库问答 >
问题:

可以存储多种数据类型的变量

沃宇
2023-03-14

我需要创建一个类,它可以在变量中存储PersonDogCat类型的值。

我想声明一个变量,因为只有一个特定类型的对象将用于初始化类的实例。为每种类型声明一个变量将浪费资源,因为只会使用一个。

考虑这一点:

Class Container {
    private Object object;
    ...
    Container(Person a){
        object = a;
    }
    Container(Dog a){
        object = a;
    }
    Container(Cat a){
        object = a;
    }
    ...
}

然后执行:

Container contA = new Container(A);
Container contB = new Container(B);

System.out.println(contA.getObject().toString());
System.out.println(contA.getObject().toString());

理想情况下,在控制台中获得正确的输出。

我研究了仿制药和其他东西,但找不到我需要的东西。你能告诉我我在找什么吗?

< code>Container中的< code>getObject()可以处理带有< code>instanceof的类型,但是< code>getObject()的返回类型必须是< code>Object,这是行不通的。

我正在学习Java这真的让我很困扰。

我应该使用继承并创建一个子类来处理每种类型吗?

共有3个答案

巫马泓
2023-03-14

两种可能是。

  • 超级班。
    • 选择一个具有一些常见行为的超类,并扩展所有类
    • 现在声明超类引用以将其存储为子类
    • 在这里,您可以使用泛型作为边界
    • 看看这里,泛型
      < li >声明接口并实现所有的类。 < li >现在在您的类中声明该引用以保存您的对象。 < li >看看这里的界面。

    您可以使用instanceof操作符和类型转换来处理子类特定的功能。

堵才哲
2023-03-14

添加一个接口,比如<code>MeatBallMeatBall派生所有三个类。现在创建一个以meatball作为输入的构造函数。以类似的方式存储。

麹高义
2023-03-14

你可以使用泛型(你已经猜到了):

public class Container<T> {
    T object;
    Container(T a) {
        object = a;
    }

    T getObject() {
        return object;
    }
}

或(标记)接口(泛化)。在下面的代码中,您可以继续使用哺乳动物,而不是区分猫和狗:

public interface Mammal {
}

public class Container {
    Mammal object;
    Container(Mammal a) {
        object = a;
    }

    Mammal getObject() {
        return object;
    }
}

public class Cat implements Mammal {...
public class Dog implements Mammal {...
public class Person implements Mammal {...

接口将类连接在一起,赋予它们一个意义,而泛型则没有。

 类似资料:
  • 问题内容: 我正在ASP.NET,C#,MVC3和SQL Server 2008中构建应用程序。 将向用户显示一个表单以进行填写(姓名,电子邮件,地址等)。我想允许应用程序的管理员向此表单添加额外的动态问题。 额外问题的数量和返回的数据类型将有所不同。例如,管理员可以添加0、1或多个以下类型的问题: 您是否拥有完整,整洁的驾驶执照? 从1到5对您的驾驶技巧进行评分。 请描述您上一次长途旅行的时间?

  • 问题内容: 所以我的问题是,我在Android(Java)上编写了一个函数,该函数需要两个Double,两个Int和一个Calendar对象。我相信提供的允许它在单独的线程中运行的类AsyncTask仅接受一种类型的Object(但允许多种)作为参数,因此我认为我可以将其放入List或LinkedList或其他内容中。 是否存在允许多个数据类型()的类型,还是我必须创建自己的对象类?我是一个新手程

  • 问题内容: 由于MySQL似乎没有任何“布尔”数据类型,因此您“滥用”哪种数据类型在MySQL中存储正确/错误信息? 尤其是在从PHP脚本进行读写的情况下。 随着时间的流逝,我已经使用并看到了几种方法: tinyint,包含值0/1的varchar字段, 包含字符串‘0’/‘1’或’true’/’false’的varchar字段 最后枚举包含两个选项“ true” /“ false”的字段。 以上

  • 问题内容: 很抱歉,如果这是重复的,尽管我无法在任何地方找到确切的答案: 有没有办法在 postgreSQL中 创建一个包含多个数据类型的数组? 我有一个类型的列(类型文本数组);尽管我想从type插入三个条目,然后插入第四个条目到此数组中。 有办法吗?如果是这样,怎么办? 问题答案: 我不认为有一种方法可以声明具有多个类型的数组。但是,我认为您可以使用复合类型来完成您想做的事情,例如, 然后,您

  • 好吧,我一直在Kotlin试验原始数据存储,我有一个问题。我正在使用以下内容。原型文件: 这是我的序列化程序类: 和我的存储库: 因此,在我的updateValue()方法中,我可以设置“name”字段的名称,但我没有地址消息字段的setter,如street和number。编译器只显示getter。在姓名和年龄字段的另一边,我有setters。如何对这两个地址字段使用setters:街道、编号?

  • 本文向大家介绍我可以在JavaScript cookie中存储多少数据?,包括了我可以在JavaScript cookie中存储多少数据?的使用技巧和注意事项,需要的朋友参考一下 以下是您可以存储在JavaScript cookie中的日期的详细信息- 网页浏览器 最大Cookie 每个Cookie的最大大小 谷歌浏览器 180 4096字节 火狐浏览器 150 4097字节 歌剧 180 409