【问题标题】:JAVA variable as 2 types [closed]JAVA变量作为2种类型[关闭]
【发布时间】:2014-06-20 12:58:33
【问题描述】:

如何创建 String 类型和 Collection 类型的值?

我希望有时放入此字符串,有时放入集合。

例如在javascript中我会这样做

 var k;
 if (someBoolean){
    k=1;
 } else{
    k=[1,2,3];
 }

我可以在 java、hack 或其他东西中获得变量的这种行为吗?

我找到了解决方法:我创建了一个接口,并将这个 Objects 清除为这个接口。

【问题讨论】:

  • 请更具体。你可以有一个字符串集合,或者你可以在一个JSON(或XML)数组中序列化一些字符串集合。
  • 没有数组没有字符串的集合我也有集合和字符串我想要变量,在某些情况下是字符串,另一个放入其中集合
  • 为什么不先使用字符串集合,然后再从集合中获取字符串?
  • 因为我不希望我需要进入 Collection 并使用 get 方法..
  • @user3160197 请edit您的问题;目前它看起来像XY problem

标签: java variables types


【解决方案1】:

你不能。 String 是最终类,这意味着您不能对其进行扩展。一个字符串永远只是一个字符串。你可以有一个包含字符串的集合,但一个字符串对象只有两种类型:对象和字符串。

您可以拥有一个包含字符串(或 StringBuilder)和集合的类,然后使用该类来存储/接收来自

【讨论】:

    【解决方案2】:

    Java 不支持联合类型;但是,这两种类型共享相同的基类 Object,因此您可以将其中任何一种分配给这样定义的变量

     Object something;
     something = "Hello World!";
     something = new ArrayList(); // this is a collection.
    

    您可能正在考虑一个字符串集合,在这种情况下,您可以将其定义为 Collection<String>

     Collection<String> strings = new ArrayList<String>();
     strings.add("Hello");
     strings.add("World");
     strings.add("!");
    

    如果这不是您想要的,并且您确实想有时存储一个字符串,有时存储一个集合,请记住 Java 强制执行严格的类型检查。这意味着变量不能只存储任何东西,它们必须存储类型兼容的东西。

    StringCollection 差别太大,如果没有一些严重糟糕的编程(比如使用 Object)或者更奇怪的东西,就不能被认为是类型兼容的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-01
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-27
      • 2017-07-16
      • 1970-01-01
      相关资源
      最近更新 更多