(二十四)Java工具类Mutable接口提供可变的存储改变值详解「终于解决」

(二十四)Java工具类Mutable接口提供可变的存储改变值详解「终于解决」1.Mutable接口提供了一个通用的接口去实现可变数据类型的实现所有已知实现Mutable接口的类有MutableBoolean,MutableByte,MutableDouble,MutableFloat,MutableInt,MutableLong,MutableObject,MutableShort,这些类都是可变的,也就是修改对象的值不需要重新创建新的对象;典型的用…

1.Mutable接口提供了一个通用的接口去实现可变数据类型的实现

所有已知实现Mutable接口的类有MutableBoolean, MutableByte, MutableDouble, MutableFloat, MutableInt, MutableLong, MutableObject, MutableShort,这些类都是可变的,也就是修改对象的值不需要重新创建新的对象;
典型的用例是使用原始数据类型或字符串作为参数传递给一个方法并且允许方法修改原始数据或者字符串;
另外一种典型的用例是存储经常变动的原始数据类型到容器中(例如:存入map)无需创建Integer/Long包装器;

package org.apache.commons.lang3.mutable;

public abstract interface Mutable<T>
{
  public abstract T getValue();

  public abstract void setValue(T paramT);
}

2.MutableInt可变整型类详解

package org.apache.commons.lang3.mutable;

import org.apache.commons.lang3.math.NumberUtils;

public class MutableInt
  extends Number
  implements Comparable<MutableInt>, Mutable<Number>
{
  private static final long serialVersionUID = 512176391864L;
  private int value;
  /** * 声明一个可变整数,默认值为0 **/
  public MutableInt() {}
  /** *声明一个参数为int类型的值初始化MutableInt构造函数 */
  public MutableInt(int value)
  {
    this.value = value;
  }
  /** * 声明一个参数为Number类型的值初始化MutableInt构造函数 */
  public MutableInt(Number value)
  {
    this.value = value.intValue();
  }
  /** *声明一个参数为String类型的值初始化MutableInt构造函数 */
  public MutableInt(String value)
    throws NumberFormatException
  {
    this.value = Integer.parseInt(value);
  }
  /** * 获取MutableInt存储的值,并将值转换为Integer包装类型返回 */
  public Integer getValue()
  {
    return Integer.valueOf(this.value);
  }
  /** * 传递一个int类型的参数来修改MutableInt存储的默认值 */
  public void setValue(int value)
  {
    this.value = value;
  }
  /** * 传递一个Number类型额参数修改MutableInt存储的默认值 */
  public void setValue(Number value)
  {
    this.value = value.intValue();
  }
  /** * MutableInt加1 */
  public void increment()
  {
    this.value += 1;
  }
  /** * 该方法将MutableInt的值加一并返回未加一之前的数据,非线程安全的 */
  public int getAndIncrement()
  {
    int last = this.value;
    this.value += 1;
    return last;
  }
  /** * 将MutableInt存储的值加一并返回 */
  public int incrementAndGet()
  {
    this.value += 1;
    return this.value;
  }
  /** * 将MutableInt存储的值减一 */
  public void decrement()
  {
    this.value -= 1;
  }
  /** * 将MutableInt存储的值减一并返回未减一之前的数据 */
  public int getAndDecrement()
  {
    int last = this.value;
    this.value -= 1;
    return last;
  }
  /** * 将MutableInt存储的值减一并返回 */
  public int decrementAndGet()
  {
    this.value -= 1;
    return this.value;
  }
  /** * 将MutableInt存储的值加上指定的int类型值 */
  public void add(int operand)
  {
    this.value += operand;
  }
  /** * 将MutableInt存储的值加上指定的Number类型的值 */
  public void add(Number operand)
  {
    this.value += operand.intValue();
  }
  /** * 将MutableInt存储的值减去指定的int类型值 */
  public void subtract(int operand)
  {
    this.value -= operand;
  }
  /** * 将MutableInt存储的值减去指定的Number类型的值 */
  public void subtract(Number operand)
  {
    this.value -= operand.intValue();
  }
  /** * 将MutableInt存储的值加上指定的int类型的值并返回结果 */
  public int addAndGet(int operand)
  {
    this.value += operand;
    return this.value;
  }
  /** * 将MutableInt存储的值将上指定的Number类型的值并返回结果 */
  public int addAndGet(Number operand)
  {
    this.value += operand.intValue();
    return this.value;
  }
  /** * 将MutableInt存储的值加上指定的int类型的值并返回之前的值 */
  public int getAndAdd(int operand)
  {
    int last = this.value;
    this.value += operand;
    return last;
  }
  /** * 将MutableInt存储的值加上指定的Number类型的值并返回之前的值 */
  public int getAndAdd(Number operand)
  {
    int last = this.value;
    this.value += operand.intValue();
    return last;
  }
  /** * 将MutableInt类型转换成int类型 */
  public int intValue()
  {
    return this.value;
  }
  /** * 将MutableInt类型转换成long类型 */
  public long longValue()
  {
    return this.value;
  }
  /** * 将MutableInt类型转换成float类型 */
  public float floatValue()
  {
    return this.value;
  }
  /** * 将MutableInt类型转换成double类型 */  
  public double doubleValue()
  {
    return this.value;
  }
  /** * 将MutableInt类型转换成Integer类型 */
  public Integer toInteger()
  {
    return Integer.valueOf(intValue());
  }
  /** * 比较两个MutableInt类型数据是否相等 */
  public boolean equals(Object obj)
  {
    if ((obj instanceof MutableInt)) {
      return this.value == ((MutableInt)obj).intValue();
    }
    return false;
  }
  /** * */
  public int hashCode()
  {
    return this.value;
  }
  /** * 比较两个MutableInt数据的大小 */
  public int compareTo(MutableInt other)
  {
    return NumberUtils.compare(this.value, other.value);
  }
  /** * */
  public String toString()
  {
    return String.valueOf(this.value);
  }
}

其它几种可变的数据类型与上面的源码基本相似,一看就懂,就不在复述;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/7751.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注