当前位置: 首页>>代码示例>>Java>>正文


Java Field.isAccessible方法代码示例

本文整理汇总了Java中java.lang.reflect.Field.isAccessible方法的典型用法代码示例。如果您正苦于以下问题:Java Field.isAccessible方法的具体用法?Java Field.isAccessible怎么用?Java Field.isAccessible使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在java.lang.reflect.Field的用法示例。


在下文中一共展示了Field.isAccessible方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: findField

import java.lang.reflect.Field; //导入方法依赖的package包/类
public static Field findField(Class<?> originClazz, String name) throws NoSuchFieldException {
    for (Class<?> clazz = originClazz; clazz != null; clazz = clazz.getSuperclass()) {
        try {
            Field field = clazz.getDeclaredField(name);

            if (!field.isAccessible()) {
                field.setAccessible(true);
            }

            return field;
        } catch (NoSuchFieldException e) {
            // ignore and search next
        }
    }

    throw new NoSuchFieldException("Field " + name + " not found in " + originClazz);
}
 
开发者ID:weiwenqiang,项目名称:GitHub,代码行数:18,代码来源:ShareReflectUtil.java

示例2: findField

import java.lang.reflect.Field; //导入方法依赖的package包/类
public static Field findField(Object instance, String name) throws NoSuchFieldException {
    for (Class<?> clazz = instance.getClass(); clazz != null; clazz = clazz.getSuperclass()) {
        try {
            Field field = clazz.getDeclaredField(name);

            if (!field.isAccessible()) {
                field.setAccessible(true);
            }

            return field;
        } catch (NoSuchFieldException e) {
            // ignore and search next
        }
    }

    throw new NoSuchFieldException("Field " + name + " not found in " + instance.getClass());
}
 
开发者ID:alibaba,项目名称:atlas,代码行数:18,代码来源:NClassLoader.java

示例3: updateFields

import java.lang.reflect.Field; //导入方法依赖的package包/类
/**
 * This method is for internal user only.
 */
public void updateFields(T object)
{
    long version = getObjectVersion();
    RemoteObject<?> other = (RemoteObject<?>)object;
    if (version < 0 || other.getObjectVersion() > version) {
        //We have invalid version value or the other one is newer.
        
        for (Field f : mFields) {
            if (!f.isAccessible()) {
                f.setAccessible(true);
            }
            try {
                Object fieldValue = f.get(object);
                f.set(this, fieldValue);
            } 
            catch (Exception e) {
                throw new RuntimeException(e);
            } 
        }
        saveSnapshotState();
    }
}
 
开发者ID:suomenriistakeskus,项目名称:oma-riista-android,代码行数:26,代码来源:RemoteObject.java

示例4: getValueByFieldName

import java.lang.reflect.Field; //导入方法依赖的package包/类
/**
 * 获取obj对象fieldName的属性值
 * 
 * @param obj
 * @param fieldName
 * @return
 * @throws SecurityException
 * @throws NoSuchFieldException
 * @throws IllegalArgumentException
 * @throws IllegalAccessException
 */
public static Object getValueByFieldName(Object obj, String fieldName) throws SecurityException, NoSuchFieldException, IllegalArgumentException,
        IllegalAccessException {
    Field field = getFieldByFieldName(obj, fieldName);
    Object value = null;
    if (field != null) {
        if (field.isAccessible()) {
            value = field.get(obj);
        } else {
            field.setAccessible(true);
            value = field.get(obj);
            field.setAccessible(false);
        }
    }
    return value;
}
 
开发者ID:PekingGo,项目名称:ipayquery,代码行数:27,代码来源:ReflectHelper.java

示例5: setDevEnvironment

import java.lang.reflect.Field; //导入方法依赖的package包/类
private void setDevEnvironment()
{
	try
	{
		Class<CoreModManager> clazz = CoreModManager.class;
		Field f = clazz.getDeclaredField("deobfuscatedEnvironment");
		boolean accessibilityFlag = f.isAccessible();
		f.setAccessible(true);
		isDevEnvironment = f.getBoolean(null);
		f.setAccessible(accessibilityFlag);
		if (isDevEnvironment)
		{
			ExPMisc.modLogger.log(LogLevel.Fine, "ExPetrum has detected dev environment! Additional debug features enabled!");
			ExPMisc.modLogger.setLevel(LogLevel.Debug);
		}
		else
		{
			ExPMisc.modLogger.log(LogLevel.Fine, "ExPetrum has detected normal minecraft environment. No debug features enabled.");
		}
	}
	catch (Exception ex)
	{
		ExPMisc.modLogger.log(LogLevel.Warning, "ExPetrum was unable to determine the environment it is located in! Assuming normal minecraft instance.");
	}
}
 
开发者ID:V0idWa1k3r,项目名称:ExPetrum,代码行数:26,代码来源:ExPetrum.java

示例6: readValue

import java.lang.reflect.Field; //导入方法依赖的package包/类
public static Object readValue(Object instance, Field field) throws ReflectorException {
    if (instance == null) {
        return null;
    }

    boolean originalAccessibility = field.isAccessible();
    field.setAccessible(true);

    try {
        return field.get(instance);
    } catch (IllegalAccessException e) {
        throw new ReflectorException("Unable to manipulate field accessibility.", e);
    } finally {
        field.setAccessible(originalAccessibility);
    }
}
 
开发者ID:iFanie,项目名称:ChocoPie,代码行数:17,代码来源:Reflector.java

示例7: lookupFieldResource

import java.lang.reflect.Field; //导入方法依赖的package包/类
/**
 * Inject resources in specified field.
 *
 * @param context
 *            jndi context to extract value from
 * @param instance
 *            object to inject into
 * @param field
 *            field target for injection
 * @param name
 *            jndi name value is bound under
 * @param clazz
 *            class annotation is defined in
 * @throws IllegalAccessException
 *             if field is inaccessible
 * @throws javax.naming.NamingException
 *             if value is not accessible in naming context
 */
protected static void lookupFieldResource(Context context, Object instance, Field field, String name,
		Class<?> clazz) throws NamingException, IllegalAccessException {

	Object lookedupResource;
	boolean accessibility;

	String normalizedName = normalize(name);

	if ((normalizedName != null) && (normalizedName.length() > 0)) {
		lookedupResource = context.lookup(normalizedName);
	} else {
		lookedupResource = context.lookup(clazz.getName() + "/" + field.getName());
	}

	synchronized (field) {
		accessibility = field.isAccessible();
		field.setAccessible(true);
		field.set(instance, lookedupResource);
		field.setAccessible(accessibility);
	}
}
 
开发者ID:how2j,项目名称:lazycat,代码行数:40,代码来源:DefaultInstanceManager.java

示例8: writeField

import java.lang.reflect.Field; //导入方法依赖的package包/类
public static void writeField(@Nullable Object obj, Field field, Object value) {
    final boolean wasAccessible = field.isAccessible();
    try {
        field.setAccessible(true);
        field.set(obj, value);
    } catch(IllegalAccessException e) {
        throw new RuntimeException(e);
    } finally {
        field.setAccessible(wasAccessible);
    }
}
 
开发者ID:OvercastNetwork,项目名称:ProjectAres,代码行数:12,代码来源:Fields.java

示例9: getFieldEnumOrdinal

import java.lang.reflect.Field; //导入方法依赖的package包/类
/**
 * 获取枚举类型的字段值-ordinal
 *
 * @param target the target object from which to get the field
 * @param field  the field to get
 * @return enum.ordinal
 * @throws Exception IllegalArgumentException, IllegalAccess
 */
@SuppressWarnings("rawtypes")
public static int getFieldEnumOrdinal(Object target, Field field) throws Exception {
    if (field.getType().isEnum()) {
        if (!field.isAccessible()) {
            ReflectionUtils.makeAccessible(field);
        }
        return ((Enum) field.get(target)).ordinal();
    } else {
        throw new ReflectionException(target.getClass().getName() + "." + field.getName()
                + ":field type is not Enum, can not convertToEnum");
    }
}
 
开发者ID:geeker-lait,项目名称:tasfe-framework,代码行数:21,代码来源:EnumFieldReflectUtil.java

示例10: fixInputMethodManagerLeak

import java.lang.reflect.Field; //导入方法依赖的package包/类
/**
 * InputMethodManager导致的内存泄露
 * from: http://blog.csdn.net/sodino/article/details/32188809
 * @param destContext
 */
public static void fixInputMethodManagerLeak(Context destContext) {
    if (destContext == null) {
        return;
    }

    InputMethodManager imm = (InputMethodManager) destContext.getSystemService(Context.INPUT_METHOD_SERVICE);
    if (imm == null) {
        return;
    }

    String[] arr = new String[]{"mCurRootView", "mServedView", "mNextServedView"};
    Field f = null;
    Object obj_get = null;
    for (int i = 0;i < arr.length;i ++) {
        String param = arr[i];
        try{
            f = imm.getClass().getDeclaredField(param);
            if (f.isAccessible() == false) {
                f.setAccessible(true);
            } // author: sodino mail:[email protected]
            obj_get = f.get(imm);
            if (obj_get != null && obj_get instanceof View) {
                View v_get = (View) obj_get;
                if (v_get.getContext() == destContext) { // 被InputMethodManager持有引用的context是想要目标销毁的
                    f.set(imm, null); // 置空,破坏掉path to gc节点
                } else {
                    // 不是想要目标销毁的,即为又进了另一层界面了,不要处理,避免影响原逻辑,也就不用继续for循环了
                    break;
                }
            }
        }catch(Throwable t){
            t.printStackTrace();
        }
    }
}
 
开发者ID:weimin96,项目名称:shareNote,代码行数:41,代码来源:LeakUtil.java

示例11: processFields

import java.lang.reflect.Field; //导入方法依赖的package包/类
protected void processFields ( final FieldProcessor processor )
{
    for ( final Field field : Reflections.findAllFields ( this.target.getClass () ) )
    {
        final Message message = field.getAnnotation ( Message.class );
        if ( message == null )
        {
            continue;
        }

        if ( !field.isAccessible () )
        {
            field.setAccessible ( true );
            try
            {
                processor.process ( this.target, field, message );
            }
            finally
            {
                field.setAccessible ( false );
            }
        }
        else
        {
            processor.process ( this.target, field, message );
        }
    }
}
 
开发者ID:eclipse,项目名称:neoscada,代码行数:29,代码来源:AnnotationMessageProcessor.java

示例12: setFieldValue

import java.lang.reflect.Field; //导入方法依赖的package包/类
private void setFieldValue(Field field, T object, Object value) throws IllegalArgumentException, IllegalAccessException {
    if (field.isAccessible()) {
        field.set(object, value);
    } else {
        field.setAccessible(true);
        field.set(object, value);
        field.setAccessible(false);
    }
}
 
开发者ID:stoiandan,项目名称:OnlineShop,代码行数:10,代码来源:CSVProcessor.java

示例13: makeAccessible

import java.lang.reflect.Field; //导入方法依赖的package包/类
/**
 * 改变private/protected的成员变量为public,尽量不调用实际改动的语句,避免JDK的SecurityManager抱怨。
 *
 * @param field the field
 */
public static void makeAccessible(Field field) {
    if ((!Modifier.isPublic(field.getModifiers()) || !Modifier.isPublic(field.getDeclaringClass().getModifiers()) || Modifier
        .isFinal(field.getModifiers())) && !field.isAccessible()) {
        field.setAccessible(true);
    }
}
 
开发者ID:ruyangit,项目名称:angit,代码行数:12,代码来源:Reflections.java

示例14: getField

import java.lang.reflect.Field; //导入方法依赖的package包/类
/**
 * Gets the value of a field from an Object
 *
 * @param object Object that field belongs to
 * @param field Field that is being retrieved
 * @return The value of the field
 */
public static Object getField(Object object, Field field) {
    Object value = null;
    try {
        boolean accessible = field.isAccessible();
        field.setAccessible(true);
        value = field.get(object);
        field.setAccessible(accessible);
    } catch (NullPointerException | IllegalAccessException ignored) {}
    return value;
}
 
开发者ID:ImpactDevelopment,项目名称:ClientAPI,代码行数:18,代码来源:ReflectionUtils.java

示例15: setField

import java.lang.reflect.Field; //导入方法依赖的package包/类
protected void setField(Field field) {
    if (!field.isAccessible()) {
        try {
            field.setAccessible(true);
        } catch (Exception e) {
            e.printStackTrace();
            field = null;
        }
    }
    this.field = field;
    this.isStatic = Modifier.isStatic(field.getModifiers());
}
 
开发者ID:Borlea,项目名称:EchoPet,代码行数:13,代码来源:SafeField.java


注:本文中的java.lang.reflect.Field.isAccessible方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。