模块 jmc.utils
程序包 com.jmc.lang.ref

类 Pointer<T>

java.lang.Object
com.jmc.lang.ref.Pointer<T>
类型参数:
T - 指针储存类型

public class Pointer<T> extends Object
指针
从以下版本开始:
1.7
API Note:

 public void test() {
     // 声明一个指针,并绑定一个初始值
     var p = Pointer.of(1);

     // 获取指针内的值(1)
     var value = p.get();

     // 获取指针值的类型(class java.lang.Integer)
     var type = p.type();

     // 重新设置指针里的值为666
     p.reset(666);

     // 将指针传入方法中,执行完值为667
     changeValue(p);

     // 直接打印指针(Pointer { java.lang.Integer@29b })
     // 打印的是指针的“地址”(hashcode)
     System.out.println(p);
 }

 // 传入一个指针并改变值
 void changeValue(Pointer<Integer> p) {
     // 使指针指向的值 + 1
     p.update(t -> ++t);
 }
 
  • 方法详细资料

    • of

      public static <T> Pointer<T> of(T initValue)
      获得一个指针
      类型参数:
      T - 初始值类型
      参数:
      initValue - 指向的初始值
      返回:
      指针
      API Note:
      
       // 创建一个指针,指定初始值为3
       var ptr = Pointer.of(3);
       
    • empty

      public static <T> Pointer<T> empty()
      获得一个具有类型的空指针
      类型参数:
      T - 初始值类型
      返回:
      具有类型的空指针
      从以下版本开始:
      2.3
      API Note:
      
       // 创建一个空指针,类型为Integer
       var intPtr = Pointer.<Integer>empty();
       
    • get

      public T get()
      获取指针指向的值
      返回:
      指向的值
      API Note:
      
       // 定义指针
       var ptr = Pointer.of(3);
       // 获取指针指向的值(3)
       var value = ptr.get();
       
    • update

      public void update(Function<T,T> updateFunc)
      更新指针指向的值
      参数:
      updateFunc - 更新函数
      API Note:
      
       // 定义指针
       var ptr = Pointer.of(3);
       // 更新指针指向的值,将其+1
       ptr.update(i -> i + 1);
       
    • reset

      public T reset(T newValue)
      让指针指向一个新值
      参数:
      newValue - 新值
      返回:
      旧值
      API Note:
      
       // 定义指针
       var ptr = Pointer.of(3);
       // 使指针指向一个新的值:4
       ptr.reset(4);
       
    • resetUnchecked

      public T resetUnchecked(Object newValue)
      让指针指向一个新值(无类型检查)
      参数:
      newValue - 新值
      返回:
      旧值
      API Note:
      
       // 定义指针
       var ptr = Pointer.of(3);
       // 使指针指向一个新的值并不加类型检查
       ptr.resetUnchecked(4);
       
    • type

      public Class<T> type()
      获取指针指向的值的类型
      返回:
      值的类型
      API Note:
      
       // 定义指针
       var ptr = Pointer.of(3);
       // 获取指针指向值类型(class java.lang.Integer)
       var classType = ptr.getType();
       
    • toString

      public String toString()
      打印指针类型和指向的地址
      覆盖:
      toString 在类中 Object
      返回:
      指针类型和指向的地址
      API Note:
      
       // 定义指针
       var ptr = Pointer.of(3);
       // 获取指针类型和指向的地址(Pointer { java.lang.Integer@29a })
       var toString = ptr.toString();