/**
* Get class field
*
* @param fieldName Field's name
* @param type Field's type class
* @param <V> Field's type
* @return {@link FieldWrapper} object or empty, if field wasn't found
*/
@Contract("null, null -> fail")
@SuppressWarnings("unchecked")
public <V> Optional<FieldWrapper<V>> getField(String fieldName, Class<V> type) {
/* Check arguments */
if(fieldName == null) throw new IllegalStateException("Field name shouldn't be null!");
if(type == null) throw new IllegalStateException("Field type shouldn't be null!");
/* Try to find cached field */
FieldInfo fieldInfo = new FieldInfo(fieldName, type);
/* Get field */
Integer found = FIELD_INDEX.get(fieldInfo);
Field[] field = new Field[] { found != null ? FIELD_CACHE.get(found) : null };
field[0] = field[0] != null ? field[0] : findDeclaredField(fieldName, type);
if(field[0] == null) return Optional.empty();
/* Wrap field */
return Optional.of((FieldWrapper<V>)FIELDWRAPPER_CACHE.computeIfAbsent(found,
k -> MethodHandleFieldWrapper.of(this, field[0], type)));
}
ClassWrapper.java 文件源码
java
阅读 40
收藏 0
点赞 0
评论 0
项目:Shuriken
作者:
评论列表
文章目录