Java 类java.lang.reflect.Member 实例源码

项目:AndHook    文件:XposedHelpers.java   
/**
 * Returns the index of the parameter declared with the given type, ensuring that there is exactly one such parameter.
 *
 * @throws NoSuchFieldError if there is no or more than one parameter with that type.
 */
public static int getParameterIndexByType(final Member method, final Class<?> type) {
    final Class<?>[] classes = (method instanceof Method) ?
            ((Method) method).getParameterTypes() : ((Constructor<?>) method).getParameterTypes();
    int idx = -1;
    for (int i = 0; i < classes.length; ++i) {
        if (classes[i] == type) {
            if (idx == -1) {
                idx = i;
            } else {
                throw new NoSuchFieldError("More than one parameter of type " + type + " found in " + method);
            }
        }
    }
    if (idx != -1) {
        return idx;
    } else {
        throw new NoSuchFieldError("No parameter of type " + type + " found in " + method);
    }
}
项目:openjdk-jdk10    文件:CallerSensitiveDynamicMethod.java   
@Override
MethodHandle getTarget(final CallSiteDescriptor desc) {
    final MethodHandles.Lookup lookup = AccessController.doPrivileged(
            (PrivilegedAction<MethodHandles.Lookup>)()->desc.getLookup(),
            GET_LOOKUP_CONTEXT);

    if(target instanceof Method) {
        final MethodHandle mh = unreflect(lookup, (Method)target);
        if(Modifier.isStatic(((Member)target).getModifiers())) {
            return StaticClassIntrospector.editStaticMethodHandle(mh);
        }
        return mh;
    }
    return StaticClassIntrospector.editConstructorMethodHandle(unreflectConstructor(lookup,
            (Constructor<?>)target));
}
项目:incubator-netbeans    文件:PatchByteCodeTest.java   
public void testPatchingPublic() throws Exception {
    Class<?> c = new L().loadClass(C.class.getName());
    assertNotSame(c, C.class);
    Member m;
    m = c.getDeclaredConstructor(boolean.class);
    assertEquals(0, m.getModifiers() & Modifier.PUBLIC);
    assertEquals(Modifier.PRIVATE, m.getModifiers() & Modifier.PRIVATE);
    m = c.getDeclaredConstructor(int.class);
    assertEquals(Modifier.PUBLIC, m.getModifiers() & Modifier.PUBLIC);
    assertEquals(0, m.getModifiers() & Modifier.PRIVATE);
    m = c.getDeclaredMethod("m1");
    assertEquals(0, m.getModifiers() & Modifier.PUBLIC);
    assertEquals(Modifier.PRIVATE, m.getModifiers() & Modifier.PRIVATE);
    m = c.getDeclaredMethod("m2");
    assertEquals(Modifier.PUBLIC, m.getModifiers() & Modifier.PUBLIC);
    assertEquals(0, m.getModifiers() & Modifier.PRIVATE);
}
项目:incubator-netbeans    文件:AsmTest.java   
public void testPatchingPublic() throws Exception {
    Class<?> c = new L().loadClass(C.class.getName());
    assertNotSame(c, C.class);
    Member m;
    m = c.getDeclaredConstructor(boolean.class);
    assertEquals(0, m.getModifiers() & Modifier.PUBLIC);
    assertEquals(Modifier.PRIVATE, m.getModifiers() & Modifier.PRIVATE);
    m = c.getDeclaredConstructor(int.class);
    assertEquals(Modifier.PUBLIC, m.getModifiers() & Modifier.PUBLIC);
    assertEquals(0, m.getModifiers() & Modifier.PRIVATE);
    m = c.getDeclaredMethod("m1");
    assertEquals(0, m.getModifiers() & Modifier.PUBLIC);
    assertEquals(Modifier.PRIVATE, m.getModifiers() & Modifier.PRIVATE);
    m = c.getDeclaredMethod("m2");
    assertEquals(Modifier.PUBLIC, m.getModifiers() & Modifier.PUBLIC);
    assertEquals(0, m.getModifiers() & Modifier.PRIVATE);
}
项目:incubator-netbeans    文件:AsmTest.java   
public void testExecutingConstructor() throws Exception {
    ClassLoader l = new L();
    Class<?> c = l.loadClass(CAPI.class.getName());        
    Member m = c.getDeclaredConstructor(int.class);
    Constructor ctor = (Constructor)m;
    ctor.setAccessible(true);

    Object o = ctor.newInstance(5);
    assertSame(c, o.getClass());
    assertTrue("Invalid API superclass", Superclazz.class.isInstance(o));

    assertEquals("@ConstructorDelegate method did not execute", 5, ((Superclazz)o).val);

    Field f = o.getClass().getField("otherVal");
    Object v = f.get(o);
    assertEquals("Patched API constructor did not execute", v, 1);
}
项目:GameAuthoringEnvironment    文件:Reflection.java   
private static boolean typesMatch (Member function, Class<?>[] formals, Object[] actuals) {
    if ((actuals.length == formals.length) ||
        (actuals.length >= formals.length && isVarArgs(function))) {
        int idx = 0;
        // check each parameter individually
        for (; idx < formals.length - 1; idx++) {
            if (!isInstance(formals[idx], actuals[idx])) {
                return false;
            }
        }
        // check each of the last actual args to see if they can be one of varargs
        Class<?> type =
                (formals[idx].isArray()) ? formals[idx].getComponentType() : formals[idx];
        for (; idx < actuals.length; idx++) {
            if (!isInstance(type, actuals[idx])) {
                return false;
            }
        }
        // it was possible, and nothing else returned false, so
        return true;
    }
    // sizes don't match
    return false;
}
项目:elasticsearch_my    文件:TypeLiteral.java   
/**
 * Returns the resolved generic parameter types of {@code methodOrConstructor}.
 *
 * @param methodOrConstructor a method or constructor defined by this or any supertype.
 * @since 2.0
 */
public List<TypeLiteral<?>> getParameterTypes(Member methodOrConstructor) {
    Type[] genericParameterTypes;

    if (methodOrConstructor instanceof Method) {
        Method method = (Method) methodOrConstructor;
        if (!method.getDeclaringClass().isAssignableFrom(rawType)) {
            throw new IllegalArgumentException(method + " is not defined by a supertype of " + type);
        }
        genericParameterTypes = method.getGenericParameterTypes();

    } else if (methodOrConstructor instanceof Constructor) {
        Constructor constructor = (Constructor) methodOrConstructor;
        if (!constructor.getDeclaringClass().isAssignableFrom(rawType)) {
            throw new IllegalArgumentException(constructor + " does not construct a supertype of " + type);
        }

        genericParameterTypes = constructor.getGenericParameterTypes();

    } else {
        throw new IllegalArgumentException("Not a method or a constructor: " + methodOrConstructor);
    }

    return resolveAll(genericParameterTypes);
}
项目:monarch    文件:AttributeDescriptor.java   
Member getReadMember(Class targetClass) throws NameNotFoundException {
  // mapping: public field (same name), method (getAttribute()),
  // method (attribute())
  List key = new ArrayList();
  key.add(targetClass);
  key.add(_name);

  Member m = (Member) _cache.get(key);
  if (m != null)
    return m;

  m = getReadField(targetClass);
  if (m == null)
    m = getReadMethod(targetClass);
  if (m != null)
    _cache.putIfAbsent(key, m);
  else
    throw new NameNotFoundException(
        LocalizedStrings.AttributeDescriptor_NO_PUBLIC_ATTRIBUTE_NAMED_0_WAS_FOUND_IN_CLASS_1
            .toLocalizedString(new Object[] {_name, targetClass.getName()}));
  // override security for nonpublic derived classes with public members
  ((AccessibleObject) m).setAccessible(true);
  return m;
}
项目:openjdk-jdk10    文件:ObjectStreamClass_1_3_1.java   
static MethodSignature[] removePrivateAndSort(Member[] m) {
    int numNonPrivate = 0;
    for (int i = 0; i < m.length; i++) {
        if (! Modifier.isPrivate(m[i].getModifiers())) {
            numNonPrivate++;
        }
    }
    MethodSignature[] cm = new MethodSignature[numNonPrivate];
    int cmi = 0;
    for (int i = 0; i < m.length; i++) {
        if (! Modifier.isPrivate(m[i].getModifiers())) {
            cm[cmi] = new MethodSignature(m[i]);
            cmi++;
        }
    }
    if (cmi > 0)
        Arrays.sort(cm, cm[0]);
    return cm;
}
项目:elasticsearch_my    文件:InjectionPoint.java   
private List<Dependency<?>> forMember(Member member, TypeLiteral<?> type,
                                               Annotation[][] parameterAnnotations) {
    Errors errors = new Errors(member);
    Iterator<Annotation[]> annotationsIterator = Arrays.asList(parameterAnnotations).iterator();

    List<Dependency<?>> dependencies = new ArrayList<>();
    int index = 0;

    for (TypeLiteral<?> parameterType : type.getParameterTypes(member)) {
        try {
            Annotation[] paramAnnotations = annotationsIterator.next();
            Key<?> key = Annotations.getKey(parameterType, member, paramAnnotations, errors);
            dependencies.add(newDependency(key, Nullability.allowsNull(paramAnnotations), index));
            index++;
        } catch (ErrorsException e) {
            errors.merge(e.getErrors());
        }
    }

    errors.throwConfigurationExceptionIfErrorsExist();
    return Collections.unmodifiableList(dependencies);
}
项目:businessworks    文件:BytecodeGen.java   
/**
 * Returns a FastClass proxy for invoking the given member or {@code null} if access rules 
 * disallow it.
 * 
 * <p>FastClass works by generating a type in the same package as the target {@code type}. This
 * may or may not work depending on the access level of the class/member. It breaks down into the
 * following cases depending on accessibility:
 * <ul>
 *   <li>Public: This always works since we can generate the type into the 
 *   {@link BridgeClassLoader} which ensures there are no versioning issues.
 *   <li>Package private and Protected: This works as long as:
 *   <ul> 
 *     <li>We can generate into the same classloader as the type.  This is not possible for JDK
 *     types which use the 'bootstrap' loader.
 *     <li>The classloader of the type has the same version of {@code FastClass} as we do.  This
 *     may be violated when running in OSGI bundles.
 *   </ul>
 *   <li>Private: This never works.
 * </ul>
 * 
 * If we are unable to generate the type, then we return null and callers should work around by
 * using normal java reflection.
 */
public static net.sf.cglib.reflect.FastClass newFastClassForMember(Class<?> type, Member member) {
  if (!new net.sf.cglib.core.VisibilityPredicate(type, false).evaluate(member)) {
    // the member cannot be indexed by fast class.  Bail out.
    return null;
  }

  boolean publiclyCallable = isPubliclyCallable(member);
  if (!publiclyCallable && !hasSameVersionOfCglib(type.getClassLoader())) {
    // The type is in a classloader with a different version of cglib and is not publicly visible
    // (so we can't use the bridge classloader to work around).  Bail out.
    return null;
  }
  net.sf.cglib.reflect.FastClass.Generator generator
      = new net.sf.cglib.reflect.FastClass.Generator();
  if (publiclyCallable) {
    // Use the bridge classloader if we can
    generator.setClassLoader(getClassLoader(type));
  }
  generator.setType(type);
  generator.setNamingPolicy(FASTCLASS_NAMING_POLICY);
  if (logger.isLoggable(Level.FINE)) {
    logger.fine("Loading " + type + " FastClass with " + generator.getClassLoader());
  }
  return generator.create();
}
项目:elasticsearch_my    文件:InjectionPoint.java   
private static <M extends Member & AnnotatedElement> void addInjectorsForMembers(
        TypeLiteral<?> typeLiteral, Factory<M> factory, boolean statics,
        Collection<InjectionPoint> injectionPoints, Errors errors) {
    for (M member : factory.getMembers(getRawType(typeLiteral.getType()))) {
        if (isStatic(member) != statics) {
            continue;
        }

        Inject inject = member.getAnnotation(Inject.class);
        if (inject == null) {
            continue;
        }

        try {
            injectionPoints.add(factory.create(typeLiteral, member, errors));
        } catch (ConfigurationException ignorable) {
            if (!inject.optional()) {
                errors.merge(ignorable.getErrorMessages());
            }
        }
    }
}
项目:Elasticsearch    文件:Errors.java   
public static void formatInjectionPoint(Formatter formatter, Dependency<?> dependency,
                                        InjectionPoint injectionPoint) {
    Member member = injectionPoint.getMember();
    Class<? extends Member> memberType = MoreTypes.memberType(member);

    if (memberType == Field.class) {
        dependency = injectionPoint.getDependencies().get(0);
        formatter.format("  while locating %s%n", convert(dependency.getKey()));
        formatter.format("    for field at %s%n", StackTraceElements.forMember(member));

    } else if (dependency != null) {
        formatter.format("  while locating %s%n", convert(dependency.getKey()));
        formatter.format("    for parameter %s at %s%n",
                dependency.getParameterIndex(), StackTraceElements.forMember(member));

    } else {
        formatSource(formatter, injectionPoint.getMember());
    }
}
项目:OpenJSharp    文件:ObjectStreamClass_1_3_1.java   
static MethodSignature[] removePrivateAndSort(Member[] m) {
    int numNonPrivate = 0;
    for (int i = 0; i < m.length; i++) {
        if (! Modifier.isPrivate(m[i].getModifiers())) {
            numNonPrivate++;
        }
    }
    MethodSignature[] cm = new MethodSignature[numNonPrivate];
    int cmi = 0;
    for (int i = 0; i < m.length; i++) {
        if (! Modifier.isPrivate(m[i].getModifiers())) {
            cm[cmi] = new MethodSignature(m[i]);
            cmi++;
        }
    }
    if (cmi > 0)
        Arrays.sort(cm, cm[0]);
    return cm;
}
项目:8R-Reflections    文件:PathExpression.java   
/**
 * Returns the member that the given node index represents on the given class.
 *
 * @param index the node index (inclusive)
 * @param c the class that have this node
 * @param args the arguments that will be used to access this node.
 * @return the member
 * @see #getMemberOf(int)
 * @see #getMemberOf(int, Map)
 * @see #getMemberOf(int, Class)
 * @see #getLastMember(Class, Map)
 * @see #needArguments()
 * @throws IndexOutOfBoundsException if the index is invalid
 * @throws IllegalArgumentException if the static path expression not support the given root obj
 */
public Member getMemberOf(int index, Class<?> c, Map<String, Object> args) {
    checkIfSupport(c, true);
    checkRange("Index", index, false);
    Member member = null;
    int i = 0;
    for (ExpressionNode node : NODES) {
        member = node.getMember(c, args);
        if (i == index) {
            return member;
        }
        if (i < LAST_INDEX) {
            c = getMemberType(member);
            while (c.isArray()) {
                c = c.getComponentType();
            }
        }
        i++;
    }
    return member;
}
项目:OpenJSharp    文件:ObjectStreamClassUtil_1_3.java   
static MethodSignature[] removePrivateAndSort(Member[] m) {
    int numNonPrivate = 0;
    for (int i = 0; i < m.length; i++) {
        if (! Modifier.isPrivate(m[i].getModifiers())) {
            numNonPrivate++;
        }
    }
    MethodSignature[] cm = new MethodSignature[numNonPrivate];
    int cmi = 0;
    for (int i = 0; i < m.length; i++) {
        if (! Modifier.isPrivate(m[i].getModifiers())) {
            cm[cmi] = new MethodSignature(m[i]);
            cmi++;
        }
    }
    if (cmi > 0)
        Arrays.sort(cm, cm[0]);
    return cm;
}
项目:OpenJSharp    文件:ReflectUtil.java   
/**
 * Does a conservative approximation of member access check. Use this if
 * you don't have an actual 'userland' caller Class/ClassLoader available.
 * This might be more restrictive than a precise member access check where
 * you have a caller, but should never allow a member access that is
 * forbidden.
 *
 * @param m the {@code Member} about to be accessed
 */
public static void conservativeCheckMemberAccess(Member m) throws SecurityException{
    final SecurityManager sm = System.getSecurityManager();
    if (sm == null)
        return;

    // Check for package access on the declaring class.
    //
    // In addition, unless the member and the declaring class are both
    // public check for access declared member permissions.
    //
    // This is done regardless of ClassLoader relations between the {@code
    // Member m} and any potential caller.

    final Class<?> declaringClass = m.getDeclaringClass();

    checkPackageAccess(declaringClass);

    if (Modifier.isPublic(m.getModifiers()) &&
            Modifier.isPublic(declaringClass.getModifiers()))
        return;

    // Check for declared member access.
    sm.checkPermission(SecurityConstants.CHECK_MEMBER_ACCESS_PERMISSION);
}
项目:DroidTelescope    文件:MemberUtils.java   
static boolean setAccessibleWorkaround(final AccessibleObject o) {
    if (o == null || o.isAccessible()) {
        return false;
    }
    final Member m = (Member) o;
    if (!o.isAccessible() && Modifier.isPublic(m.getModifiers()) && isPackageAccess(m
            .getDeclaringClass().getModifiers())) {
        try {
            o.setAccessible(true);
            return true;
        } catch (final SecurityException e) { // NOPMD
            // ignore in favor of subsequent IllegalAccessException
        }
    }
    return false;
}
项目:openjdk-jdk10    文件:ObjectStreamClassUtil_1_3.java   
static MethodSignature[] removePrivateAndSort(Member[] m) {
    int numNonPrivate = 0;
    for (int i = 0; i < m.length; i++) {
        if (! Modifier.isPrivate(m[i].getModifiers())) {
            numNonPrivate++;
        }
    }
    MethodSignature[] cm = new MethodSignature[numNonPrivate];
    int cmi = 0;
    for (int i = 0; i < m.length; i++) {
        if (! Modifier.isPrivate(m[i].getModifiers())) {
            cm[cmi] = new MethodSignature(m[i]);
            cmi++;
        }
    }
    if (cmi > 0)
        Arrays.sort(cm, cm[0]);
    return cm;
}
项目:googles-monorepo-demo    文件:NullPointerTester.java   
/**
 * Returns true if the the given member is a method that overrides {@link Object#equals(Object)}.
 *
 * <p>The documentation for {@link Object#equals} says it should accept null, so don't require an
 * explicit {@code @Nullable} annotation (see <a
 * href="https://github.com/google/guava/issues/1819">#1819</a>).
 *
 * <p>It is not necessary to consider visibility, return type, or type parameter declarations. The
 * declaration of a method with the same name and formal parameters as {@link Object#equals} that
 * is not public and boolean-returning, or that declares any type parameters, would be rejected at
 * compile-time.
 */
private static boolean isEquals(Member member) {
  if (!(member instanceof Method)) {
    return false;
  }
  Method method = (Method) member;
  if (!method.getName().contentEquals("equals")) {
    return false;
  }
  Class<?>[] parameters = method.getParameterTypes();
  if (parameters.length != 1) {
    return false;
  }
  if (!parameters[0].equals(Object.class)) {
    return false;
  }
  return true;
}
项目:boohee_v5.6    文件:b.java   
public static <T extends AccessibleObject> T a(T t) {
    if (t == null) {
        return null;
    }
    if (t instanceof Member) {
        Member member = (Member) t;
        if (Modifier.isPublic(member.getModifiers()) && Modifier.isPublic(member
                .getDeclaringClass().getModifiers())) {
            return t;
        }
    }
    if (t.isAccessible()) {
        return t;
    }
    t.setAccessible(true);
    return t;
}
项目:openjdk-jdk10    文件:FacetIntrospector.java   
boolean isAccessible(final Member m) {
    final Class<?> declaring = m.getDeclaringClass();
    // (declaring == clazz) is just an optimization - we're calling this only from code that operates on a
    // non-restricted class, so if the declaring class is identical to the class being inspected, then forego
    // a potentially expensive restricted-package check.
    return declaring == clazz || !CheckRestrictedPackage.isRestrictedClass(declaring);
}
项目:AndHook    文件:AndHook.java   
public static void hook(final Member origin, final Method replace) {
    warnKnownIssue(origin.getDeclaringClass(), replace);
    final int slot = AndHook.backup(origin);
    if (slot != -1 && saveBackupSlot(slot, replace)) {
        AndHook.hook(origin, replace, slot);
    }
}
项目:openjdk-jdk10    文件:Class.java   
/**
 * Returns an array containing {@code Class} objects representing all
 * the public classes and interfaces that are members of the class
 * represented by this {@code Class} object.  This includes public
 * class and interface members inherited from superclasses and public class
 * and interface members declared by the class.  This method returns an
 * array of length 0 if this {@code Class} object has no public member
 * classes or interfaces.  This method also returns an array of length 0 if
 * this {@code Class} object represents a primitive type, an array
 * class, or void.
 *
 * @return the array of {@code Class} objects representing the public
 *         members of this class
 * @throws SecurityException
 *         If a security manager, <i>s</i>, is present and
 *         the caller's class loader is not the same as or an
 *         ancestor of the class loader for the current class and
 *         invocation of {@link SecurityManager#checkPackageAccess
 *         s.checkPackageAccess()} denies access to the package
 *         of this class.
 *
 * @since 1.1
 */
@CallerSensitive
public Class<?>[] getClasses() {
    SecurityManager sm = System.getSecurityManager();
    if (sm != null) {
        checkMemberAccess(sm, Member.PUBLIC, Reflection.getCallerClass(), false);
    }

    // Privileged so this implementation can look at DECLARED classes,
    // something the caller might not have privilege to do.  The code here
    // is allowed to look at DECLARED classes because (1) it does not hand
    // out anything other than public members and (2) public member access
    // has already been ok'd by the SecurityManager.

    return java.security.AccessController.doPrivileged(
        new java.security.PrivilegedAction<>() {
            public Class<?>[] run() {
                List<Class<?>> list = new ArrayList<>();
                Class<?> currentClass = Class.this;
                while (currentClass != null) {
                    for (Class<?> m : currentClass.getDeclaredClasses()) {
                        if (Modifier.isPublic(m.getModifiers())) {
                            list.add(m);
                        }
                    }
                    currentClass = currentClass.getSuperclass();
                }
                return list.toArray(new Class<?>[0]);
            }
        });
}
项目:GitHub    文件:IncludeAccessorsPropertiesIT.java   
private static <M extends Member> Matcher<M> nameMatches(final Matcher<String> nameMatcher) {
    return new TypeSafeMatcher<M>() {
        @Override
        public void describeTo(Description description) {
            description.appendText("name ").appendDescriptionOf(nameMatcher);
        }

        @Override
        protected boolean matchesSafely(M item) {
            return nameMatcher.matches(item.getName());
        }
    };
}
项目:OpenJSharp    文件:Class.java   
private Constructor<T> getConstructor0(Class<?>[] parameterTypes,
                                    int which) throws NoSuchMethodException
{
    Constructor<T>[] constructors = privateGetDeclaredConstructors((which == Member.PUBLIC));
    for (Constructor<T> constructor : constructors) {
        if (arrayContentsEq(parameterTypes,
                            constructor.getParameterTypes())) {
            return getReflectionFactory().copyConstructor(constructor);
        }
    }
    throw new NoSuchMethodException(getName() + ".<init>" + argumentTypesToString(parameterTypes));
}
项目:OpenJSharp    文件:Class.java   
/**
 * Returns an array containing {@code Class} objects representing all
 * the public classes and interfaces that are members of the class
 * represented by this {@code Class} object.  This includes public
 * class and interface members inherited from superclasses and public class
 * and interface members declared by the class.  This method returns an
 * array of length 0 if this {@code Class} object has no public member
 * classes or interfaces.  This method also returns an array of length 0 if
 * this {@code Class} object represents a primitive type, an array
 * class, or void.
 *
 * @return the array of {@code Class} objects representing the public
 *         members of this class
 * @throws SecurityException
 *         If a security manager, <i>s</i>, is present and
 *         the caller's class loader is not the same as or an
 *         ancestor of the class loader for the current class and
 *         invocation of {@link SecurityManager#checkPackageAccess
 *         s.checkPackageAccess()} denies access to the package
 *         of this class.
 *
 * @since JDK1.1
 */
@CallerSensitive
public Class<?>[] getClasses() {
    checkMemberAccess(Member.PUBLIC, Reflection.getCallerClass(), false);

    // Privileged so this implementation can look at DECLARED classes,
    // something the caller might not have privilege to do.  The code here
    // is allowed to look at DECLARED classes because (1) it does not hand
    // out anything other than public members and (2) public member access
    // has already been ok'd by the SecurityManager.

    return java.security.AccessController.doPrivileged(
        new java.security.PrivilegedAction<Class<?>[]>() {
            public Class<?>[] run() {
                List<Class<?>> list = new ArrayList<>();
                Class<?> currentClass = Class.this;
                while (currentClass != null) {
                    Class<?>[] members = currentClass.getDeclaredClasses();
                    for (int i = 0; i < members.length; i++) {
                        if (Modifier.isPublic(members[i].getModifiers())) {
                            list.add(members[i]);
                        }
                    }
                    currentClass = currentClass.getSuperclass();
                }
                return list.toArray(new Class<?>[0]);
            }
        });
}
项目:AndHook    文件:XposedBridge.java   
/**
 * Hook all constructors of the specified class.
 *
 * @param hookClass The class to check for constructors.
 * @param callback  The callback to be executed when the hooked constructors are called.
 * @return A set containing one object for each found constructor which can be used to unhook it.
 */
@SuppressWarnings("all")
public static HashSet<XC_MethodHook.Unhook> hookAllConstructors(final Class<?> hookClass,
                                                                final XC_MethodHook callback) {
    final HashSet<XC_MethodHook.Unhook> unhooks = new HashSet<>();
    for (final Member constructor : hookClass.getDeclaredConstructors())
        unhooks.add(hookMethod(constructor, callback));
    return unhooks;
}
项目:8R-Reflections    文件:PathExpressionTest.java   
@Test
public void testLastMember() throws Exception {
    Field expectedMember = wrap(Address.class).getField("country");
    PathExpression pathExpression = compile(Person.class, "addresses.country");
    Member lastMember = pathExpression.getLastMember();
    assertEquals(expectedMember, lastMember);
}
项目:AndHook    文件:XposedBridge.java   
/**
 * Hooks all methods with a certain name that were declared in the specified class. Inherited
 * methods and constructors are not considered. For constructors, use
 * {@link #hookAllConstructors} instead.
 *
 * @param hookClass  The class to check for declared methods.
 * @param methodName The name of the method(s) to hook.
 * @param callback   The callback to be executed when the hooked methods are called.
 * @return A set containing one object for each found method which can be used to unhook it.
 */
@SuppressWarnings("all")
public static HashSet<XC_MethodHook.Unhook> hookAllMethods(final Class<?> hookClass,
                                                           final String methodName,
                                                           final XC_MethodHook callback) {
    final HashSet<XC_MethodHook.Unhook> unhooks = new HashSet<>();
    for (final Member method : hookClass.getDeclaredMethods())
        if (method.getName().equals(methodName))
            unhooks.add(hookMethod(method, callback));
    return unhooks;
}
项目:OpenJSharp    文件:CallerSensitiveDynamicMethod.java   
private static MethodType getMethodType(final AccessibleObject ao) {
    final boolean isMethod = ao instanceof Method;
    final Class<?> rtype = isMethod ? ((Method)ao).getReturnType() : ((Constructor<?>)ao).getDeclaringClass();
    final Class<?>[] ptypes = isMethod ? ((Method)ao).getParameterTypes() : ((Constructor<?>)ao).getParameterTypes();
    final MethodType type = MethodType.methodType(rtype, ptypes);
    final Member m = (Member)ao;
    return type.insertParameterTypes(0,
            isMethod ?
                    Modifier.isStatic(m.getModifiers()) ?
                            Object.class :
                            m.getDeclaringClass() :
                    StaticClass.class);
}
项目:ArchUnit    文件:Assertions.java   
private static <T extends Member & AnnotatedElement> String getExpectedNameOf(T member, String name) {
    String base = member.getDeclaringClass().getName() + "." + name;
    if (member instanceof Method) {
        return base + expectedParametersOf(((Method) member).getParameterTypes());
    }
    if (member instanceof Constructor<?>) {
        return base + expectedParametersOf(((Constructor<?>) member).getParameterTypes());
    }
    return base;
}
项目:elasticsearch_my    文件:Errors.java   
public static void formatSource(Formatter formatter, Object source) {
    if (source instanceof Dependency) {
        Dependency<?> dependency = (Dependency<?>) source;
        InjectionPoint injectionPoint = dependency.getInjectionPoint();
        if (injectionPoint != null) {
            formatInjectionPoint(formatter, dependency, injectionPoint);
        } else {
            formatSource(formatter, dependency.getKey());
        }

    } else if (source instanceof InjectionPoint) {
        formatInjectionPoint(formatter, null, (InjectionPoint) source);

    } else if (source instanceof Class) {
        formatter.format("  at %s%n", StackTraceElements.forType((Class<?>) source));

    } else if (source instanceof Member) {
        formatter.format("  at %s%n", StackTraceElements.forMember((Member) source));

    } else if (source instanceof TypeLiteral) {
        formatter.format("  while locating %s%n", source);

    } else if (source instanceof Key) {
        Key<?> key = (Key<?>) source;
        formatter.format("  while locating %s%n", convert(key));

    } else {
        formatter.format("  at %s%n", source);
    }
}
项目:OpenJSharp    文件:ObjectStreamClass.java   
private MethodSignature(Member m) {
    member = m;
    if (isConstructor()) {
        signature = ObjectStreamClass.getSignature((Constructor)m);
    } else {
        signature = ObjectStreamClass.getSignature((Method)m);
    }
}
项目:HL4A    文件:ScriptableObject.java   
@Override
ScriptableObject getPropertyDescriptor(Context cx, Scriptable scope) {
    int attr = getAttributes();
    ScriptableObject desc = new NativeObject();
    ScriptRuntime.setBuiltinProtoAndParent(desc, scope, TopLevel.Builtins.Object);
    desc.defineProperty("enumerable", (attr & DONTENUM) == 0, EMPTY);
    desc.defineProperty("configurable", (attr & PERMANENT) == 0, EMPTY);
    if (getter == null && setter == null) {
        desc.defineProperty("writable", (attr & READONLY) == 0, EMPTY);
    }
    if (getter != null) {
        if( getter instanceof MemberBox ) {
            desc.defineProperty("get", new FunctionObject("f", ((MemberBox)getter).member(),scope), EMPTY);
        } else if( getter instanceof Member ) {
            desc.defineProperty("get", new FunctionObject("f",(Member)getter,scope), EMPTY);
        } else {
            desc.defineProperty("get", getter, EMPTY);
        }
    }
    if (setter != null) {
        if( setter instanceof MemberBox ) {
            desc.defineProperty("set", new FunctionObject("f", ((MemberBox)setter).member(),scope), EMPTY);
        } else if( setter instanceof Member ) {
            desc.defineProperty("set", new FunctionObject("f",(Member)setter,scope), EMPTY);
        } else {
            desc.defineProperty("set", setter, EMPTY);
        }
    }
    return desc;
}
项目:HL4A    文件:ScriptableObject.java   
private static Member findAnnotatedMember(AccessibleObject[] members,
                                          Class<? extends Annotation> annotation) {
    for (AccessibleObject member : members) {
        if (member.isAnnotationPresent(annotation)) {
            return (Member) member;
        }
    }
    return null;
}
项目:ats-framework    文件:MethodFinder.java   
/**
 * @param  first  a Member
 * @param  second  a Member
 * @return  true if the first Member is more specific than the second,
 * false otherwise.  Specificity is determined according to the
 * procedure in the Java Language Specification, section 15.12.2.
 */
private boolean memberIsMoreSpecific(
                                      Member first,
                                      Member second ) {

    Class<?>[] firstParamTypes = paramMap.get(first);
    Class<?>[] secondParamTypes = paramMap.get(second);

    return ClassUtilities.compatibleClasses(firstParamTypes, secondParamTypes, customMatchingRules);
}
项目:manifold    文件:ReflectUtil.java   
public static void setAccessible( Field f )
{
  try
  {
    f.setAccessible( true );
  }
  catch( Exception e )
  {
    setAccessible( (Member)f );
  }
}
项目:ProjectAres    文件:ReflectionFormatting.java   
public static String multilineDescription(Class<?> cls) {
    final String text = cls.getName();

    final Member member = enclosingMember(cls);
    if(member != null) {
        return text + "\n  in " + multilineDescription(member);
    }

    final Class<?> outer = cls.getEnclosingClass();
    if(outer != null) {
        return text + "\n  in " + multilineDescription(outer);
    }

    return text;
}
项目:skript-mirror    文件:ExprMemberNames.java   
@Override
protected String[] get(Event e) {
  return Arrays.stream(target.getArray(e))
      .map(Util::toClass)
      .flatMap(mapper)
      .map(Member::getName)
      .distinct()
      .toArray(String[]::new);
}