Class LambdaAccessor<T>

java.lang.Object
cloud.opencode.base.reflect.accessor.LambdaAccessor<T>
Type Parameters:
T - the target type | 目标类型
All Implemented Interfaces:
PropertyAccessor<T>

public class LambdaAccessor<T> extends Object implements 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 Details

    • of

      public static <T> LambdaAccessor<T> of(Class<T> clazz, String propertyName)
      Creates a LambdaAccessor for a property by name 按名称为属性创建LambdaAccessor

      Tries 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

      public String getName()
      Description copied from interface: PropertyAccessor
      Gets the property name 获取属性名
      Specified by:
      getName in interface PropertyAccessor<T>
      Returns:
      the property name | 属性名
    • getType

      public Class<?> getType()
      Description copied from interface: PropertyAccessor
      Gets the property type 获取属性类型
      Specified by:
      getType in interface PropertyAccessor<T>
      Returns:
      the property type | 属性类型
    • getGenericType

      public Type getGenericType()
      Description copied from interface: PropertyAccessor
      Gets the generic property type 获取泛型属性类型
      Specified by:
      getGenericType in interface PropertyAccessor<T>
      Returns:
      the generic type | 泛型类型
    • getDeclaringClass

      public Class<T> getDeclaringClass()
      Description copied from interface: PropertyAccessor
      Gets the declaring class 获取声明类
      Specified by:
      getDeclaringClass in interface PropertyAccessor<T>
      Returns:
      the declaring class | 声明类
    • isReadable

      public boolean isReadable()
      Description copied from interface: PropertyAccessor
      Checks if property is readable 检查属性是否可读
      Specified by:
      isReadable in interface PropertyAccessor<T>
      Returns:
      true if readable | 如果可读返回true
    • isWritable

      public boolean isWritable()
      Description copied from interface: PropertyAccessor
      Checks if property is writable 检查属性是否可写
      Specified by:
      isWritable in interface PropertyAccessor<T>
      Returns:
      true if writable | 如果可写返回true
    • get

      public Object get(T target)
      Description copied from interface: PropertyAccessor
      Gets the property value 获取属性值
      Specified by:
      get in interface PropertyAccessor<T>
      Parameters:
      target - the target object | 目标对象
      Returns:
      the value | 值
    • set

      public void set(T target, Object value)
      Description copied from interface: PropertyAccessor
      Sets the property value 设置属性值
      Specified by:
      set in interface PropertyAccessor<T>
      Parameters:
      target - the target object | 目标对象
      value - the value | 值
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object