public final class Ref<T> extends Object
Ref 包装了一个值,表示对该值的应用。
灵感来自于 C# 的 ref 参数修饰符。C# 允许通过以下方式,将值返回给调用端:
void Method(ref int refArgument)
{
refArgument = refArgument + 44;
}
int number = 1;
Method(ref number);
Console.WriteLine(number); // Output: 45
Ref 使 Java 可以达到类似的效果,如:
void method(final Ref<Integer> refArgument) {
refArgument.transformValue(i -> i + 44);
}
Ref<Integer> number = Ref.of(1);
method(number);
System.out.println(number.getValue()); // Output: 45
当一个方法需要产生多个结果时,无法有多个返回值,可以使用 Ref 作为参数传入,方法内部修改 Ref 的值。
调用方在调用方法之后,使用 getValue() 获取结果。
String method(final Ref<Integer> intRefArgument, final Ref<String> strRefArgument) {
intRefArgument.transformValue(i -> i + 44);
strRefArgument.setValue("Hello " + strRefArgument.getValue());
return "Return string";
}
Ref<Integer> number = Ref.of(1);
Ref<String> str = Ref.of("Java");
String result = method(number, str);
System.out.println(number.getValue()); // Output: 45
System.out.println(str.getValue()); // Output: Hello Java
System.out.println(result); // Output: Return string
| Modifier and Type | Method and Description |
|---|---|
boolean |
checkValue(Predicate<? super T> predicate)
使用
Predicate 检查引用的对象 |
static <T> Ref<T> |
empty()
创建空引用
|
boolean |
equals(Object obj) |
void |
execute(Consumer<? super T> consumer)
将引用的对象作为入参,执行
Consumer 的逻辑 |
T |
getValue()
获取引用的对象
|
int |
hashCode() |
boolean |
isNotNull()
判断所引用的对象是否不为
null |
boolean |
isNull()
判断所引用的对象是否为
null |
static <T> Ref<T> |
of(T value)
创建对象引用
|
void |
setValue(T value)
设置引用的对象
|
String |
toString() |
<R> Ref<R> |
transform(Function<? super T,R> function)
使用
Function 修改所引用的对象,返回新的 Ref |
void |
transformValue(UnaryOperator<T> operator)
使用
UnaryOperator 修改 Ref 内部引用的对象 |
public static <T> Ref<T> of(@Nullable T value)
T - 引用的类型value - 引用的对象Ref 对象public static <T> Ref<T> empty()
T - 引用的类型public void transformValue(UnaryOperator<T> operator)
UnaryOperator 修改 Ref 内部引用的对象operator - 修改逻辑public <R> Ref<R> transform(Function<? super T,R> function)
Function 修改所引用的对象,返回新的 RefR - 结果的引用类型function - 修改逻辑public boolean checkValue(Predicate<? super T> predicate)
Predicate 检查引用的对象predicate - 判断逻辑public void execute(Consumer<? super T> consumer)
Consumer 的逻辑consumer - 要执行的逻辑public boolean isNull()
nullnullpublic boolean isNotNull()
nullnullCopyright © 2026. All rights reserved.