package com.lody.virtual.client.hook.utils;
import com.lody.virtual.client.core.VirtualCore;
import com.lody.virtual.helper.utils.ArrayUtils;
import java.util.Arrays;
import java.util.HashSet;
/**
* @author Lody
*
*/
public class MethodParameterUtils {
public static String replaceFirstAppPkg(Object[] args) {
if (args == null) {
return null;
}
int index = ArrayUtils.indexOfFirst(args, String.class);
if (index != -1) {
String pkg = (String) args[index];
args[index] = VirtualCore.get().getHostPkg();
return pkg;
}
return null;
}
public static String replaceLastAppPkg(Object[] args) {
int index = ArrayUtils.indexOfLast(args, String.class);
if (index != -1) {
String pkg = (String) args[index];
args[index] = VirtualCore.get().getHostPkg();
return pkg;
}
return null;
}
public static String replaceSequenceAppPkg(Object[] args, int sequence) {
int index = ArrayUtils.indexOf(args, String.class, sequence);
if (index != -1) {
String pkg = (String) args[index];
args[index] = VirtualCore.get().getHostPkg();
return pkg;
}
return null;
}
public static Class<?>[] getAllInterface(Class clazz){
HashSet<Class<?>> classes = new HashSet<>();
getAllInterfaces(clazz,classes);
Class<?>[] result=new Class[classes.size()];
classes.toArray(result);
return result;
}
public static void getAllInterfaces(Class clazz, HashSet<Class<?>> interfaceCollection) {
Class<?>[] classes = clazz.getInterfaces();
if (classes.length != 0) {
interfaceCollection.addAll(Arrays.asList(classes));
}
if (clazz.getSuperclass() != Object.class) {
getAllInterfaces(clazz.getSuperclass(), interfaceCollection);
}
}
}