package com.example.myandroidtest; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import android.R.integer; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.content.Context; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends BaseActivity { Class<?> bclazz; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.e("tag", "=MainActivity=onCreate="); try{ //获取指定类的class对象 Class<?> clazz = Class.forName("android.app.Notification"); //clazz.newInstance(); //获得所有构造函数 Constructor[] constructors=clazz.getConstructors(); for (Constructor constructor : constructors) { Log.e("Constructor反射构造函数:",""); //取出第i个构造方法。 System.out.print(Modifier.toString(constructor.getModifiers())); //---- 打印该构造方法的前缀修饰符 System.out.print(" "+constructor.getName()+"("); //打印该构造方法的名字 //---- 打印该构造方法的参数。 Class[] parameterTypes=constructor.getParameterTypes(); //构造方法参数集但是 数组类型显示特殊 for(int j=0;j<parameterTypes.length;j++) { System.out.print(parameterTypes[j].getName()); } System.out.println(")"); } //修饰符 -类名 -超类名 -接口 Log.e("Notification反射包名", Modifier.toString(clazz.getModifiers())+" " +clazz.getPackage().getName()+" extends "+clazz.getSuperclass()+" implement "+clazz.getInterfaces().getClass().getName()); //所有字段 Field[] fields=clazz.getDeclaredFields(); //所有public字段 //Field[] fields=clazz.getFields(); for(Field field : fields) { //数组特殊处理 if (field.getType().isArray()) { Log.e("Notification反射属性", field.getType().getComponentType()+" "+field.getName()); } else { Log.e("Notification反射属性", field.getType()+" "+field.getName()); } } //所有方法 Method[] methods =clazz.getDeclaredMethods(); //所有public方法 //Method[] methods =clazz.getMethods(); for(Method method : methods) { Log.e("Notification method反射name", Modifier.toString(method.getModifiers())+" "+method.getName()); } }catch (Exception e){ e.printStackTrace(); Log.e("Notification反射错误", "Exception"); } try{ //获得指定包的Context对象 Context c = createPackageContext("com.example.myandroidtest", Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY); //获得class对象 bclazz = Class.forName("android.bluetooth.BluetoothManager"); //所有构造函数 Constructor[] constructors=bclazz.getDeclaredConstructors(); //所有public构造函数 //Constructor[] constructors=bclazz.getConstructors(); for (Constructor constructor : constructors) { Log.e("Constructor反射构造函数:",""); //取出第i个构造方法。 System.out.print(Modifier.toString(constructor.getModifiers())); //---- 打印该构造方法的前缀修饰符 System.out.print(" "+constructor.getName()+"("); //打印该构造方法的名字 //---- 打印该构造方法的参数。 Class[] parameterTypes=constructor.getParameterTypes(); //构造方法参数集但是 数组类型显示特殊 for(int j=0;j<parameterTypes.length;j++) { System.out.print(parameterTypes[j].getName()); } System.out.println(")"); //constructor.newInstance(c);//实例化 } //有参数构造函数 Constructor con = bclazz.getConstructor(Context.class); //创建它的一个对象 //Object maObject = bclazz.newInstance();//构造函数无参数实例化 Log.e("calzz 是否为Null", ""+(bclazz==null)); Log.e("BluetoothManager反射包名", Modifier.toString(bclazz.getModifiers())+" " +bclazz.getPackage().getName()+" extends "+bclazz.getSuperclass()+" implement "+bclazz.getInterfaces().getClass().getName()); //所有字段 Field[] fields=bclazz.getDeclaredFields(); for(Field field : fields) { if (field.getType().isArray()) { Log.e("BluetoothManager反射属性", field.getType().getComponentType()+" "+field.getName()); } else { Log.e("BluetoothManager反射属性", field.getType()+" "+field.getName()); } } //获得所有方法 Method[] methods =bclazz.getDeclaredMethods(); for(Method method : methods) { Log.e("BluetoothManager method反射name", ""+method.getName()); if (method.getName().equals("getAdapter")) { //执行方法 method.invoke(con.newInstance(c)); } } }catch (Exception e){ e.printStackTrace(); Log.e("calzz 是否为Null", ""+(bclazz==null)); Log.e("BluetoothManager反射错误", "Exception"); } } }
时间: 2024-10-16 05:20:45