75 lines
3.0 KiB
Java
75 lines
3.0 KiB
Java
package com.google.common.reflect;
|
|
|
|
import java.lang.reflect.AccessibleObject;
|
|
import java.lang.reflect.Constructor;
|
|
import java.lang.reflect.GenericDeclaration;
|
|
import java.lang.reflect.Member;
|
|
import java.lang.reflect.Method;
|
|
import java.lang.reflect.Modifier;
|
|
import java.lang.reflect.Type;
|
|
import java.lang.reflect.TypeVariable;
|
|
import java.util.Arrays;
|
|
|
|
/* loaded from: classes.dex */
|
|
public abstract class Invokable<T, R> extends Element implements GenericDeclaration {
|
|
|
|
static class ConstructorInvokable<T> extends Invokable<T, T> {
|
|
final Constructor<?> c;
|
|
|
|
ConstructorInvokable(Constructor<?> constructor) {
|
|
super(constructor);
|
|
this.c = constructor;
|
|
}
|
|
|
|
private boolean c() {
|
|
Class<?> declaringClass = this.c.getDeclaringClass();
|
|
if (declaringClass.getEnclosingConstructor() != null) {
|
|
return true;
|
|
}
|
|
return declaringClass.getEnclosingMethod() != null ? !Modifier.isStatic(r1.getModifiers()) : (declaringClass.getEnclosingClass() == null || Modifier.isStatic(declaringClass.getModifiers())) ? false : true;
|
|
}
|
|
|
|
Type[] b() {
|
|
Type[] genericParameterTypes = this.c.getGenericParameterTypes();
|
|
if (genericParameterTypes.length <= 0 || !c()) {
|
|
return genericParameterTypes;
|
|
}
|
|
Class<?>[] parameterTypes = this.c.getParameterTypes();
|
|
return (genericParameterTypes.length == parameterTypes.length && parameterTypes[0] == getDeclaringClass().getEnclosingClass()) ? (Type[]) Arrays.copyOfRange(genericParameterTypes, 1, genericParameterTypes.length) : genericParameterTypes;
|
|
}
|
|
|
|
@Override // java.lang.reflect.GenericDeclaration
|
|
public final TypeVariable<?>[] getTypeParameters() {
|
|
TypeVariable<Class<? super T>>[] typeParameters = getDeclaringClass().getTypeParameters();
|
|
TypeVariable<Constructor<?>>[] typeParameters2 = this.c.getTypeParameters();
|
|
TypeVariable<?>[] typeVariableArr = new TypeVariable[typeParameters.length + typeParameters2.length];
|
|
System.arraycopy(typeParameters, 0, typeVariableArr, 0, typeParameters.length);
|
|
System.arraycopy(typeParameters2, 0, typeVariableArr, typeParameters.length, typeParameters2.length);
|
|
return typeVariableArr;
|
|
}
|
|
}
|
|
|
|
static class MethodInvokable<T> extends Invokable<T, Object> {
|
|
final Method c;
|
|
|
|
MethodInvokable(Method method) {
|
|
super(method);
|
|
this.c = method;
|
|
}
|
|
|
|
@Override // java.lang.reflect.GenericDeclaration
|
|
public final TypeVariable<?>[] getTypeParameters() {
|
|
return this.c.getTypeParameters();
|
|
}
|
|
}
|
|
|
|
<M extends AccessibleObject & Member> Invokable(M m) {
|
|
super(m);
|
|
}
|
|
|
|
@Override // com.google.common.reflect.Element, java.lang.reflect.Member
|
|
public final Class<? super T> getDeclaringClass() {
|
|
return (Class<? super T>) super.getDeclaringClass();
|
|
}
|
|
}
|