import java.lang.reflect.Field; import java.util.concurrent.ConcurrentMap; import com.esotericsoftware.reflectasm.MethodAccess; import com.google.common.collect.Maps; public class ReflectUtil { private static final ConcurrentMap<Class<?>, MethodAccess> localCache = Maps.newConcurrentMap(); private ReflectUtil() { } public static String upperFirstChar(String str) { if (str == null || "".equals(str)) { return str; } char[] cs = str.toCharArray(); cs[0] -= 32; return String.valueOf(cs); } public static Object setProperty(Object clazz, String fname, Object fvalue) { if (clazz == null) { throw new IllegalArgumentException("No bean specified"); } if (fname == null) { throw new IllegalArgumentException("No name specified for bean class '" + clazz.getClass() + "'"); } return get(clazz.getClass()).invoke(clazz, "set" + upperFirstChar(fname), fvalue); } public static Object getProperty(Object clazz, String fname) { if (clazz == null) { throw new IllegalArgumentException("No bean specified"); } if (fname == null) { throw new IllegalArgumentException("No name specified for bean class '" + clazz.getClass() + "'"); } return get(clazz.getClass()).invoke(clazz, "get" + upperFirstChar(fname)); } public static MethodAccess get(Class<?> clazz) { if (localCache.containsKey(clazz)) { return localCache.get(clazz); } MethodAccess methodAccess = MethodAccess.get(clazz); localCache.putIfAbsent(clazz, methodAccess); return methodAccess; } public static <F, T> void copyPropertiesIgnoreNull(F from, T to) { copyProperties(from, to, true); } public static <F, T> void copyProperties(F from, T to) { copyProperties(from, to, false); } public static <F, T> void copyProperties(F from, T to, boolean ignoreNull) { MethodAccess fromMethodAccess = get(from.getClass()); MethodAccess toMethodAccess = get(to.getClass()); Field[] fromDeclaredFields = from.getClass().getDeclaredFields(); for (Field field : fromDeclaredFields) { String name = field.getName(); try { Object value = fromMethodAccess.invoke(from, "get" + upperFirstChar(name)); if (ignoreNull && value == null) { continue; } toMethodAccess.invoke(to, "set" + upperFirstChar(name), value); } catch (Exception e) { } } } }
相关推荐
综上所述,"High performance Java reflection.zip"可能包含有关如何利用ReflectASM提高Java反射性能的详细信息,这对于优化性能敏感的Java应用程序来说是非常有价值的。学习和掌握这些知识可以帮助开发者更好地平衡...
总的来说,Helium是一个利用ReflectASM提升性能的Java事件调度库,旨在简化事件驱动编程,提高系统的响应性和可扩展性。随着项目的完善,它有望成为Java开发者构建高性能、低延迟应用的重要工具。
9. **reflectasm-0.9.jar**: ReflectASM是一个轻量级的反射库,用于提高Java反射操作的性能。在Kryo序列化过程中可能会用到。 集成memcached到Tomcat的步骤大致如下: 1. 将上述jar包放入Tomcat的lib目录。 2. ...
6. `reflectasm-1.10.1.jar`:ReflectASM是一个用于反射的轻量级库,提高了Java反射性能。 7. `memcached-session-manager-tc7-1.9.5.jar`:这是针对Tomcat 7的特定版本,确保与Tomcat的兼容性。 8. `minlog-1.3.0...
4. **反射库**: `reflectasm-1.01.jar`是一个高效的反射库,用于提升运行时访问Java类和方法的速度。在处理序列化和反序列化时,反射库可以提高性能。 5. **ASM**: `asm-3.2.jar`是一个强大的字节码操作和分析框架...
5. `reflectasm`和`access-reflect`:可能用于优化反射操作,提高性能。 6. 其他辅助库:可能包括其他用于XML处理、编译Java表达式等功能的库。 **使用方法** 1. **引入依赖**:将提供的jar包添加到项目类路径中,...
7. **reflectasm-1.01.jar**:ReflectASM是一个轻量级的反射库,比Java标准的反射API更快,它可能被Kryo或memcached-session-manager用于提高性能。 8. **memcached-session-manager-tc7-1.6.5.jar**:这个jar是...
6. `reflectasm-1.09.jar`:ReflectASM是一个用于反射的轻量级库,提高了反射操作的性能,可能在Kryo序列化过程中使用。 7. `memcached-session-manager-tc8-1.8.3.jar`:这个是针对Tomcat 8版本的session管理器实现...
- `reflectasm`:一个用于访问和修改Java反射的高效库,Kryo利用它来加速反射操作。 - `asm`:字节码操作库,反射ASM提供底层的字节码操作,可能在某些高级功能中使用。 - `lz4-java`:LZ4压缩库,Kryo可以利用这...
- `reflectasm-0.9.jar`: 反射增强库,可能用于提高反射操作的性能。 - `msm-kryo-serializer-1.6.5.jar`: Memcached Session Manager的Kryo序列化模块,用于优化Session的序列化过程。 - `spymemcached-2.10.3....
8. `reflectasm-1.01.jar` 和 `minlog-1.2.jar`:这两个库分别是反射优化和轻量级日志库,它们可能作为Kryo或其它库的依赖,提供性能优化和日志记录功能。 总结起来,这个jar包集合提供了实现Nginx+Memcached ...
5. `reflectasm-1.11.4-2.jar`:ReflectASM是一个基于反射的轻量级库,提供更快的访问Java类字段和方法的能力。在处理会话数据时,ReflectASM可能会提升性能,特别是在大量读写会话时。 6. `memcached-session-...
5. **reflectasm-1.09-shaded.jar** 和 **asm-3.2.jar**:ReflectASM是一个轻量级、高性能的Java反射库,而ASM是一个底层的Java字节码操作和分析框架。这两个库通常用于类的动态生成和修改,可能在序列化过程中发挥...
4. **reflectasm-0.8.jar**:ReflectASM是一个轻量级的Java反射库,提供了更快的访问类和字段的方法。在Heritrix这样的高性能系统中,反射ASM可以提升运行时动态操作类和对象的性能,特别是在处理大量数据和动态配置...
7. `reflectasm-1.01.jar`:反射优化库,可能被Kryo用来提高序列化性能。 8. `memcached-session-manager-tc7-1.6.5.jar`:针对Tomcat 7的特定版本,提供与Tomcat的适配。 9. `minlog-1.2.jar`:一个简单的日志库,...