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

如何创建一个只有一个变量(可以是两种数据类型之一)的对象?

贺亦
2023-03-14

我想创建一个只包含一个变量的对象,但该变量可以是两种特定数据类型之一。我该怎么做?

我想给它一个对象(泛型)变量,然后检查给定的参数是否是正确的类。

但后来我尝试创建一个空对象“x”,然后再创建两个对象“a”和“b”,这扩展了第一个对象。看起来还行。

例如:

x variable = new a(); // okay

x variable2 = new b(); // okay

x variable3 = "hello"; // not okay, since it is a String.

有“正确”的方法吗?我并不特别喜欢我的第二个方法,因为它留给我一个空的类文件,而第一个方法似乎有点笨重。

编辑:

在上面提到的第一个方法中,类看起来有点像这样:

public class x{
    Object var;

    public x(Object var1){
        if (var1.getClass() == a.class || var1.getClass() == b.class){
            this.var = var1;
        }
    }

}

我还可以为数据类型参数的每个组合创建不同的构造函数,如:

public class x {
     Object var;

     public x(a var1){
         this.var = var1;
     }

     public x(b var1){
         this.var = var1;
     }

}

第二种方法使用3个不同的类:

public class x{
//empty

}

public class a extends x{
   // some fields
   // constructors
}

public class b extends x{
   // some fields
   // constructors
}

EDIT2-问题的更多背景:

我有一个对象“z”,它需要包含两个变量(值得一提)。这些变量可以是“a”、“a”或“a”、“b”或“b”、“a”或“b”、“b”类型。这就是我的程序。然后我想创建一个新的数据类型,可以是“a”或“b”,以简化“z”对象,使其始终是两个“x”变量(其中任何一个都可以是“a”或“b”)。

我总是可以在对象“z”中创建两个“a”变量和两个“b”变量,并在初始化它们时保留2个null,但这似乎是一种糟糕的风格。

在我的程序中,有一个类型为“z”的对象的ArrayList。

每个z变量有2个变量。每个变量可以是a类型的对象,也可以是一个整数(神秘的b类型),它指数组中的一个索引,最终指向另一个z变量。

如果你继续跟踪z变量,你最终会得到一个p变量,这是基本情况。

共有2个答案

常温文
2023-03-14

也许你正在寻找泛型。

public class DataStorage<T>
{
   private T data;
   public DataStorage(final T data)
   {
      this.data = data;
   }
   public T getData()
   {
      return this.data;
   }
}

DataStorage<a> aData = new DataStorage<a>(new a());
DataStorage<b> bData = new DataStorage<b>(new b());
DataStorage<Integer> intData = new DataStorage<Integer>(new Integer(3));
周辉
2023-03-14

这个任务就是类继承的目的;您应该选择或编写一个类或接口,该类或接口代表数据类型的共同点,并且变量应该是该类型的。数据类型应该继承(实现)超类型。

 类似资料:
  • 我有一个(相当复杂的)数据类型: 现在我发现自己需要另一个数据类型…有两个构造函数。一个与的相同;另一个只存储一个。我有什么选择? 虽然这会起作用,但它也允许类似这样的东西,这是没有意义的。

  • 请考虑以下代码: 在foo中,的类型将是。 我想在中创建一个变量,它的类型是的泛型,在本例中是。 有没有办法做到这一点?谢谢。 编辑不幸的是(我想)我无法重写签名,因为函数是用不同类型的对象调用的,例如

  • 我有两个Java类,Product和ProductReview。ProductReview除了变量long id和String review外,还有一个名为Product的变量,该变量应包含类Product中的一个对象。例子: Products类有私有变量long id、String name和List评论(它也从Product评论类中获取评论)。产品类与Product评论有一对多的关联,反之亦然

  • 我目前正在与tkinter一起完成一项学校作业,为用户创建一个图形用户界面以输入他们的输入。我决定将输入分成不同的页面,以避免用户被问题淹没,并且不需要滚动 每一页都有一系列标签和条目,在一个右除数和一个左除数上分开,我已经设法在每一页上实现了这一点,付出了一些努力。这是我工作代码的简化版本: 然而,在将每个页面拆分为两个不同的Frame()容器时,我遇到了两个问题: 用ipadx和ipady设置

  • 问题内容: 我是一个自学者。当前,我正在制作一个需要矩阵型数据库的GUI项目。 我想学习如何创建一个可以在arraylist中存储多个对象的类。 这是我的示例代码。请注意,这只是我的尝试。该代码尚未完成,因此无法正常工作。 谢谢你的热心帮助。 }} 问题答案: 我认为一种更好的方法是创建一个用户信息类来存储特定用户的信息。 然后将其放入ArrayList中。 然后,对于您当前的方法,您可以

  • 如何创建具有整数和字符串输入类型的?如果我创建一个: 这将是一个类型。如果我将其创建为: 这将是类型。我如何创建一个,它可以接受整数和字符串输入类型?谢谢。