我需要创建一个类,它可以在变量中存储Person
、Dog
或Cat
类型的值。
我想声明一个变量,因为只有一个特定类型的对象将用于初始化类的实例。为每种类型声明一个变量将浪费资源,因为只会使用一个。
考虑这一点:
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这真的让我很困扰。
我应该使用继承并创建一个子类来处理每种类型吗?
两种可能是。
您可以使用instanceof操作符和类型转换来处理子类特定的功能。
添加一个接口,比如<code>MeatBallMeatBall派生所有三个类。现在创建一个以meatball作为输入的构造函数。以类似的方式存储。
你可以使用泛型(你已经猜到了):
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