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


Java AccessibleObject.setAccessible方法代码示例

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


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

示例1: referenceFieldsOf

import java.lang.reflect.AccessibleObject; //导入方法依赖的package包/类
Collection<Field> referenceFieldsOf(Class<?> k) {
    Collection<Field> fields = classFields.get(k);
    if (fields == null) {
        fields = new ArrayDeque<Field>();
        ArrayDeque<Field> allFields = new ArrayDeque<>();
        for (Class<?> c = k; c != null; c = c.getSuperclass())
            for (Field field : c.getDeclaredFields())
                if (!Modifier.isStatic(field.getModifiers())
                    && !field.getType().isPrimitive())
                    fields.add(field);
        AccessibleObject.setAccessible(
            fields.toArray(new AccessibleObject[0]), true);
        classFields.put(k, fields);
    }
    return fields;
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:17,代码来源:RemoveLeak.java

示例2: reflectionAppend

import java.lang.reflect.AccessibleObject; //导入方法依赖的package包/类
/**
 * <p>Appends the fields and values defined by the given object of the
 * given Class.</p>
 * 
 * @param lhs  the left hand object
 * @param rhs  the right hand object
 * @param clazz  the class to append details of
 * @param builder  the builder to append to
 * @param useTransients  whether to test transient fields
 * @param excludeFields  array of field names to exclude from testing
 */
private static void reflectionAppend(
    Object lhs,
    Object rhs,
    Class clazz,
    EqualsBuilder builder,
    boolean useTransients,
    String[] excludeFields) {
    Field[] fields = clazz.getDeclaredFields();
    AccessibleObject.setAccessible(fields, true);
    for (int i = 0; i < fields.length && builder.isEquals; i++) {
        Field f = fields[i];
        if (!ArrayUtils.contains(excludeFields, f.getName())
            && (f.getName().indexOf('$') == -1)
            && (useTransients || !Modifier.isTransient(f.getModifiers()))
            && (!Modifier.isStatic(f.getModifiers()))) {
            try {
                builder.append(f.get(lhs), f.get(rhs));
            } catch (IllegalAccessException e) {
                //this can't happen. Would get a Security exception instead
                //throw a runtime exception in case the impossible happens.
                throw new InternalError("Unexpected IllegalAccessException");
            }
        }
    }
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:37,代码来源:EqualsBuilder.java

示例3: getClassLoader

import java.lang.reflect.AccessibleObject; //导入方法依赖的package包/类
/**
 * Enable sharing of the class-loader with 3rd party.
 *
 * @return the class-loader user be the helper.
 */
public ClassLoader getClassLoader() {
    // To follow the same behavior of Class.forName(...) I had to play
    // dirty (Supported by Sun, IBM & BEA JVMs)
    try {
        // Get a reference to this class' class-loader
        ClassLoader cl = this.getClass().getClassLoader();
        // Create a method instance representing the protected
        // getCallerClassLoader method of class ClassLoader
        Method mthd = ClassLoader.class.getDeclaredMethod(
                "getCallerClassLoader", new Class[0]);
        // Make the method accessible.
        AccessibleObject.setAccessible(new AccessibleObject[] {mthd}, true);
        // Try to get the caller's class-loader
        return (ClassLoader)mthd.invoke(cl, new Object[0]);
    } catch (Exception all) {
        // Use this class' class-loader
        return this.getClass().getClassLoader();
    }
}
 
开发者ID:AsuraTeam,项目名称:asura,代码行数:25,代码来源:SimpleClassLoadHelper.java

示例4: setAccessibility

import java.lang.reflect.AccessibleObject; //导入方法依赖的package包/类
public static void setAccessibility(boolean b) {
    if (!b) {
        accessibility = false;
    } else {
        String.class.getDeclaredMethods(); // test basic access
        try {
            final AccessibleObject member = String.class.getDeclaredField("value");
            member.setAccessible(true);
            member.setAccessible(false);
        } catch (NoSuchFieldException e) {
            // ignore
        }
        accessibility = true;
    }
    KrineClassManager.clearResolveCache();
}
 
开发者ID:imkiva,项目名称:Krine,代码行数:17,代码来源:Capabilities.java

示例5: trySetAccessible

import java.lang.reflect.AccessibleObject; //导入方法依赖的package包/类
static void trySetAccessible(AccessibleObject ao, boolean shouldSucceed) {
    try {
        ao.setAccessible(true);
        assertTrue(shouldSucceed);
    } catch (Exception e) {
        assertFalse(shouldSucceed);
    }
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:9,代码来源:Main.java

示例6: getAllConstructorsOfClass

import java.lang.reflect.AccessibleObject; //导入方法依赖的package包/类
/**
 * 获取某个类型的所有构造方法
 *
 * @param clazz      类型
 * @param accessible 是否可以访问
 * @return 构造方法数组
 */
private static Constructor<?>[] getAllConstructorsOfClass(final Class<?> clazz, boolean accessible) {
    if (clazz == null) {
        return null;
    }

    Constructor<?>[] constructors = clazz.getDeclaredConstructors();
    if (constructors != null && constructors.length > 0) {
        AccessibleObject.setAccessible(constructors, accessible);
    }

    return constructors;
}
 
开发者ID:drtrang,项目名称:typehandlers-encrypt,代码行数:20,代码来源:ReflectionUtil.java

示例7: tryToMakeAccessible

import java.lang.reflect.AccessibleObject; //导入方法依赖的package包/类
@Override
protected boolean tryToMakeAccessible(AccessibleObject accessible)
{
    if (accessible.isAccessible()) {
        return true;
    }
    try {
        accessible.setAccessible(true);
    } catch (Exception ex) { }

    return accessible.isAccessible();
}
 
开发者ID:MikaGuraN,项目名称:HL4A,代码行数:13,代码来源:VMBridge_jdk15.java

示例8: testForwarding

import java.lang.reflect.AccessibleObject; //导入方法依赖的package包/类
/**
 * Tests that the forwarding wrapper returned by {@code wrapperFunction} properly forwards
 * method calls with parameters passed as is, return value returned as is, and exceptions
 * propagated as is.
 */
public <T> void testForwarding(
    Class<T> interfaceType, Function<? super T, ? extends T> wrapperFunction) {
  checkNotNull(wrapperFunction);
  checkArgument(interfaceType.isInterface(), "%s isn't an interface", interfaceType);
  Method[] methods = getMostConcreteMethods(interfaceType);
  AccessibleObject.setAccessible(methods, true);
  for (Method method : methods) {
    // Under java 8, interfaces can have default methods that aren't abstract.
    // No need to verify them.
    // Can't check isDefault() for JDK 7 compatibility.
    if (!Modifier.isAbstract(method.getModifiers())) {
      continue;
    }
    // The interface could be package-private or private.
    // filter out equals/hashCode/toString
    if (method.getName().equals("equals")
        && method.getParameterTypes().length == 1
        && method.getParameterTypes()[0] == Object.class) {
      continue;
    }
    if (method.getName().equals("hashCode")
        && method.getParameterTypes().length == 0) {
      continue;
    }
    if (method.getName().equals("toString")
        && method.getParameterTypes().length == 0) {
      continue;
    }
    testSuccessfulForwarding(interfaceType, method, wrapperFunction);
    testExceptionPropagation(interfaceType, method, wrapperFunction);
  }
  if (testsEquals) {
    testEquals(interfaceType, wrapperFunction);
  }
  testToString(interfaceType, wrapperFunction);
}
 
开发者ID:paul-hammant,项目名称:googles-monorepo-demo,代码行数:42,代码来源:ForwardingWrapperTester.java

示例9: setAccessible

import java.lang.reflect.AccessibleObject; //导入方法依赖的package包/类
static void setAccessible(AccessibleObject obj) {
    if (setAccessibleEnable && !obj.isAccessible()) {
        try {
            obj.setAccessible(true);
        } catch (AccessControlException e) {
            setAccessibleEnable = false;
        }
    }
}
 
开发者ID:JackChan1999,项目名称:boohee_v5.6,代码行数:10,代码来源:TypeUtils.java

示例10: setAccessibleWorkaround

import java.lang.reflect.AccessibleObject; //导入方法依赖的package包/类
/**
 * XXX Default access superclass workaround
 *
 * When a public class has a default access superclass with public members,
 * these members are accessible. Calling them from compiled code works fine.
 * Unfortunately, on some JVMs, using reflection to invoke these members
 * seems to (wrongly) to prevent access even when the modifer is public.
 * Calling setAccessible(true) solves the problem but will only work from
 * sufficiently privileged code. Better workarounds would be gratefully
 * accepted.
 * @param o the AccessibleObject to set as accessible
 */
static void setAccessibleWorkaround(AccessibleObject o) {
    if (o == null || o.isAccessible()) {
        return;
    }
    Member m = (Member) o;
    if (Modifier.isPublic(m.getModifiers())
            && isPackageAccess(m.getDeclaringClass().getModifiers())) {
        try {
            o.setAccessible(true);
        } catch (SecurityException e) {
            // ignore in favor of subsequent IllegalAccessException
        }
    }
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:27,代码来源:MemberUtils.java

示例11: reflectionAppend

import java.lang.reflect.AccessibleObject; //导入方法依赖的package包/类
/**
 * <p>
 * Appends the fields and values defined by the given object of the given <code>Class</code>.
 * </p>
 * 
 * @param object
 *            the object to append details of
 * @param clazz
 *            the class to append details of
 * @param builder
 *            the builder to append to
 * @param useTransients
 *            whether to use transient fields
 * @param excludeFields
 *            Collection of String field names to exclude from use in calculation of hash code
 */
private static void reflectionAppend(Object object, Class clazz, HashCodeBuilder builder, boolean useTransients,
        String[] excludeFields) {
    if (isRegistered(object)) {
        return;
    }
    try {
        register(object);
        Field[] fields = clazz.getDeclaredFields();
        AccessibleObject.setAccessible(fields, true);
        for (int i = 0; i < fields.length; i++) {
            Field field = fields[i];
            if (!ArrayUtils.contains(excludeFields, field.getName())
                && (field.getName().indexOf('$') == -1)
                && (useTransients || !Modifier.isTransient(field.getModifiers()))
                && (!Modifier.isStatic(field.getModifiers()))) {
                try {
                    Object fieldValue = field.get(object);
                    builder.append(fieldValue);
                } catch (IllegalAccessException e) {
                    // this can't happen. Would get a Security exception instead
                    // throw a runtime exception in case the impossible happens.
                    throw new InternalError("Unexpected IllegalAccessException");
                }
            }
        }
    } finally {
        unregister(object);
    }
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:46,代码来源:HashCodeBuilder.java

示例12: appendFieldsIn

import java.lang.reflect.AccessibleObject; //导入方法依赖的package包/类
/**
 * <p>
 * Appends the fields and values defined by the given object of the given Class.
 * </p>
 * 
 * <p>
 * If a cycle is detected as an object is &quot;toString()'ed&quot;, such an object is rendered as if
 * <code>Object.toString()</code> had been called and not implemented by the object.
 * </p>
 * 
 * @param clazz
 *            The class of object parameter
 */
protected void appendFieldsIn(Class clazz) {
    if (clazz.isArray()) {
        this.reflectionAppendArray(this.getObject());
        return;
    }
    Field[] fields = clazz.getDeclaredFields();
    AccessibleObject.setAccessible(fields, true);
    for (int i = 0; i < fields.length; i++) {
        Field field = fields[i];
        String fieldName = field.getName();
        if (this.accept(field)) {
            try {
                // Warning: Field.get(Object) creates wrappers objects
                // for primitive types.
                Object fieldValue = this.getValue(field);
                this.append(fieldName, fieldValue);
            } catch (IllegalAccessException ex) {
                //this can't happen. Would get a Security exception
                // instead
                //throw a runtime exception in case the impossible
                // happens.
                throw new InternalError("Unexpected IllegalAccessException: " + ex.getMessage());
            }
        }
    }
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:40,代码来源:ReflectionToStringBuilder.java

示例13: reflectionAppend

import java.lang.reflect.AccessibleObject; //导入方法依赖的package包/类
/**
 * <p>Appends to <code>builder</code> the comparison of <code>lhs</code>
 * to <code>rhs</code> using the fields defined in <code>clazz</code>.</p>
 * 
 * @param lhs  left-hand object
 * @param rhs  right-hand object
 * @param clazz  <code>Class</code> that defines fields to be compared
 * @param builder  <code>CompareToBuilder</code> to append to
 * @param useTransients  whether to compare transient fields
 * @param excludeFields  fields to exclude
 */
private static void reflectionAppend(
    Object lhs,
    Object rhs,
    Class clazz,
    CompareToBuilder builder,
    boolean useTransients,
    String[] excludeFields) {
    
    Field[] fields = clazz.getDeclaredFields();
    AccessibleObject.setAccessible(fields, true);
    for (int i = 0; i < fields.length && builder.comparison == 0; i++) {
        Field f = fields[i];
        if (!ArrayUtils.contains(excludeFields, f.getName())
            && (f.getName().indexOf('$') == -1)
            && (useTransients || !Modifier.isTransient(f.getModifiers()))
            && (!Modifier.isStatic(f.getModifiers()))) {
            try {
                builder.append(f.get(lhs), f.get(rhs));
            } catch (IllegalAccessException e) {
                // This can't happen. Would get a Security exception instead.
                // Throw a runtime exception in case the impossible happens.
                throw new InternalError("Unexpected IllegalAccessException");
            }
        }
    }
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:38,代码来源:CompareToBuilder.java

示例14: setAccessible

import java.lang.reflect.AccessibleObject; //导入方法依赖的package包/类
static void setAccessible(AccessibleObject obj) {
    if (!setAccessibleEnable) {
        return;
    }
    
    if (obj.isAccessible()) {
        return;
    }
    
    try {
        obj.setAccessible(true);
    } catch (AccessControlException error) {
        setAccessibleEnable = false;
    }
}
 
开发者ID:uavorg,项目名称:uavstack,代码行数:16,代码来源:TypeUtils.java

示例15: resultSingle

import java.lang.reflect.AccessibleObject; //导入方法依赖的package包/类
/**
 * 根据类型将请求中的参数封装成一个对象并返回
 * @param clazz	httpBean中方法参数的类型
 * @param index	用于resultList()方法标识索引位置
 * @return
 * @throws Exception
 */
private Object resultSingle(Class<?> clazz, int index) throws Exception {
	if (cycleNumber >= 10) {
		cycleNumber++;
		return null;
	}
	
	Object instance = clazz.newInstance();
	Field[] fields = clazz.getDeclaredFields();
	AccessibleObject.setAccessible(fields, true);
	
	for (Field field : fields) {
		if (BasicUtil.isCollection(clazz)) {
			instance = resultList(field.getGenericType());
			continue;
		} 
		
		String[] vals = paramMap.get(field.getName());
		
		if (vals == null || index >= vals.length)
			continue;
		
		String param = vals[index];
		
		if (BasicUtil.isCommonType(field))
			field.set(instance, BasicUtil.convert(field, param));
		else if (field.getType() == Date.class) {
			dateFormatCheck(format);
			Date date = DateUtil.resolve(param, format);
			field.set(instance, date);
		}
		else {
			resultSingle(field.getType(), 0);
		}
	}
	return instance;
}
 
开发者ID:NymphWeb,项目名称:nymph,代码行数:44,代码来源:ResovlerParamImpl.java


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