Class LambdaAccessor<T>
java.lang.Object
cloud.opencode.base.reflect.accessor.LambdaAccessor<T>
- Type Parameters:
T- the target type | 目标类型
- All Implemented Interfaces:
PropertyAccessor<T>
Lambda-based Property Accessor (via LambdaMetafactory)
基于Lambda的属性访问器(通过LambdaMetafactory)
Uses LambdaMetafactory to generate Function (getter) and
BiConsumer (setter) for near-zero-cost property access after warmup.
This is the fastest reflective access strategy available.
使用 LambdaMetafactory 生成 Function(getter)和
BiConsumer(setter),预热后实现接近零成本的属性访问。
这是可用的最快反射访问策略。
Features | 主要功能:
- LambdaMetafactory-based near-native access - 基于LambdaMetafactory的接近原生访问
- Getter/setter method discovery with field fallback - getter/setter方法发现及字段回退
- Immutable and thread-safe after construction - 构造后不可变且线程安全
- Cached lambda for repeated invocations - 缓存lambda用于重复调用
Usage Examples | 使用示例:
LambdaAccessor<User> accessor = LambdaAccessor.of(User.class, "name");
String name = (String) accessor.get(user);
accessor.set(user, "Alice");
Security | 安全性:
- Thread-safe: Yes (immutable after construction) - 线程安全: 是(构造后不可变)
- Null-safe: No (caller must ensure non-null target) - 空值安全: 否(调用方须确保非空目标)
- Since:
- JDK 25, opencode-base-reflect V1.0.3
- Author:
- Leon Soo www.LeonSoo.com
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionbooleanGets the property value 获取属性值Gets the declaring class 获取声明类Gets the generic property type 获取泛型属性类型getName()Gets the property name 获取属性名Class<?> getType()Gets the property type 获取属性类型inthashCode()booleanChecks if property is readable 检查属性是否可读booleanChecks if property is writable 检查属性是否可写static <T> LambdaAccessor<T> Creates a LambdaAccessor for a property by name 按名称为属性创建LambdaAccessorvoidSets the property value 设置属性值toString()Methods inherited from interface PropertyAccessor
get, getOrDefault, setIfWritable
-
Method Details
-
of
Creates a LambdaAccessor for a property by name 按名称为属性创建LambdaAccessorTries getter/setter methods first (getXxx/isXxx/setXxx), then falls back to direct field access via MethodHandle.
优先尝试getter/setter方法(getXxx/isXxx/setXxx),然后回退到 通过MethodHandle的直接字段访问。
- Type Parameters:
T- the target type | 目标类型- Parameters:
clazz- the class | 类propertyName- the property name | 属性名- Returns:
- the accessor | 访问器
-
getName
Description copied from interface:PropertyAccessorGets the property name 获取属性名- Specified by:
getNamein interfacePropertyAccessor<T>- Returns:
- the property name | 属性名
-
getType
Description copied from interface:PropertyAccessorGets the property type 获取属性类型- Specified by:
getTypein interfacePropertyAccessor<T>- Returns:
- the property type | 属性类型
-
getGenericType
Description copied from interface:PropertyAccessorGets the generic property type 获取泛型属性类型- Specified by:
getGenericTypein interfacePropertyAccessor<T>- Returns:
- the generic type | 泛型类型
-
getDeclaringClass
Description copied from interface:PropertyAccessorGets the declaring class 获取声明类- Specified by:
getDeclaringClassin interfacePropertyAccessor<T>- Returns:
- the declaring class | 声明类
-
isReadable
public boolean isReadable()Description copied from interface:PropertyAccessorChecks if property is readable 检查属性是否可读- Specified by:
isReadablein interfacePropertyAccessor<T>- Returns:
- true if readable | 如果可读返回true
-
isWritable
public boolean isWritable()Description copied from interface:PropertyAccessorChecks if property is writable 检查属性是否可写- Specified by:
isWritablein interfacePropertyAccessor<T>- Returns:
- true if writable | 如果可写返回true
-
get
Description copied from interface:PropertyAccessorGets the property value 获取属性值- Specified by:
getin interfacePropertyAccessor<T>- Parameters:
target- the target object | 目标对象- Returns:
- the value | 值
-
set
Description copied from interface:PropertyAccessorSets the property value 设置属性值- Specified by:
setin interfacePropertyAccessor<T>- Parameters:
target- the target object | 目标对象value- the value | 值
-
equals
-
hashCode
-
toString
-