【问题标题】:Is it possible to create my own primitive datatype in java. like int, float,double是否可以在 Java 中创建我自己的原始数据类型。像 int、float、double
【发布时间】:2023-03-16 19:24:01
【问题描述】:

如何在 java 中创建我自己的数据类型,它将接受从 0 到 1024 的值范围。

我的声明是。

kilobyte a=10;

有可能吗?

【问题讨论】:

  • 简短回答:不。长答案:不。
  • 在 Java 中,你通常会为这样的东西创建一个千字节类。
  • Java 有 BigInteger。看看那个。
  • 谢谢大家............

标签: java types type-conversion


【解决方案1】:

没有。 Java 不允许这样做(即创建一个原语)。但是您可以为此创建自己的类。

【讨论】:

    【解决方案2】:

    不,你不能创建自己的原始类型,也不能重载运算符,所以这在 java 中是不可能的。

    【讨论】:

      【解决方案3】:

      您无法创建自己的原语,但您可以为此创建一个包装器Object

      这里是肮脏的例子:

      // note that class name doesn't follow Java conventions here
      public class kilobyte {
          private int number;
      
          public kilobyte(Number number) {
              if (number == null) {
                  throw new IllegalArgumentException("argument is null");
              }
              else if (number.intValue() > 1024 || number.intValue() < 0) {
                  throw new IllegalArgumentException("argument not within 0 < x < 1024 range");
              }
              else {
                  this.number = number.intValue();
              }
          }
          // TODO getter/setter
      }
      

      【讨论】:

      • 就个人而言,我可能已经允许 0 作为有效值。接受 Number 而不是使用 int 有什么意义?就此而言,扩展Number 可能是一个可行的选择。哦,在构造函数can get messy 中抛出异常;在这种情况下,最好还是使用静态构造函数——尤其是对于大量输入受限的类型,缓存不可变对象可能会在这里显示出好处。
      • @Clockwork-Muse 您的评论包含各种有效的观察结果(我这边+1)。请注意,我的帖子说“肮脏的例子”是有原因的:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 2011-05-30
      • 2018-09-23
      • 2013-10-05
      • 1970-01-01
      • 2015-07-01
      • 2012-03-11
      相关资源
      最近更新 更多