oppo r11 plus不断重复连接wifi无线网怎么办

2012年8月 总版技术专家分月排行榜第三2012年7月 总版技术专家分月排行榜第三
2014年8月 高性能开发大版内专家分月排行榜第一2013年11月 高性能开发大版内专家分月排行榜第一2012年12月 Java大版内专家分月排行榜第一2012年11月 Java大版内专家分月排行榜第一2012年10月 Java大版内专家分月排行榜第一2012年9月 Java大版内专家分月排行榜第一2012年8月 Java大版内专家分月排行榜第一2012年7月 Java大版内专家分月排行榜第一2012年6月 Java大版内专家分月排行榜第一2012年5月 Java大版内专家分月排行榜第一2012年4月 Java大版内专家分月排行榜第一2012年3月 Java大版内专家分月排行榜第一2012年2月 Java大版内专家分月排行榜第一2012年1月 Java大版内专家分月排行榜第一
2012年5月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。java使用反射列出类的所有方法 - 为程序员服务
为程序员服务
java使用反射列出类的所有方法
在下面的例子中我们通过java的反射机制获得内置类Person的所有方法的定义。
首先我们通过Person.class得到类的Class实例。获得Class实例之后我们就可以通过getDeclaredMethods()方法获得类的所有方法的定义。
可以通过Method实例的getName()方法获得方法名称。
import java.lang.reflect.M
public class Main {
* Lists the methods of a class using the Reflection api.
public void listMethodsUsingReflection() {
//Obtain the Class instance
Class personClass = Person.
//Get the methods
Method[] methods = personClass.getDeclaredMethods();
//Loop through the methods and print out their names
for (Method method : methods) {
System.out.println(method.getName());
* @param args the command line arguments
public static void main(String[] args) {
new Main().listMethodsUsingReflection();
class Person {
public String getFirstname() {
public void setFirstname(String firstname) {
this.firstname =
public String getLastname() {
public void setLastname(String lastname) {
this.lastname =
public String getAge() {
public void setAge(String age) {
this.age =
上面代码输出:
getFirstname
setFirstname
getLastname
setLastname
您可能的代码
相关聚客文章
相关专栏文章Java反射机制的实现详解
字体:[ ] 类型:转载 时间:
反射主要解决动态编程,即使用反射时,所有的对象生成是动态的,因此调用的方法也是动态的.反射可以简化开发,但是代码的可读性很低
很多主流框架都使用了反射技术.像ssh框架都采用两种技术 xml做配置文件+反射技术.
与反射有关的类包.
java.lang.reflect.*;和java.lang.C
Java中所有类型(包括基本类型)都对应一个Class对象,这个Class就是java.lang.Class。即每一个类型,在Class中都有一个Class对象跟它对应.Class 没有公共构造方法。注意不是没有,是没有公共的.
如何获得Class对象 代码如下:.针对每一个对象.getCalss(),可以得到对应的Class..Class.forName(String),String的写法:包名.类名.就会创建包名.类名对应的那个对象注:1.2只适用于引用类型.对于基本类型:封装类.TYPE代表了对应的基本类型的Class对象.Integer.TYPE对应的是int的Class对象注:3只适用于基本类型.类型,Class。&第4种是通用的.&上面的4种方法,只有方法2是动态的,只要换一个包就可以了.它具有动态潜质.所以真正意义的想体现动态编程只能使用方法2.每种类型的Class对象只有一个,即他们的地址只有一个,但是不同类型是不同的.
所以下面的打印结果都为true. 代码如下://对与引用类型Class c1 = "".getClass();Class c2 =&&&& Class.forName("java.lang.String");Class c3 = String.System.out.println(c1 ==c2);//true//对于基本类型Class num1 = Integer.TYPE;Class num2 = int.System.out.println(num1 == num2);//true反射获取类中的成员的相关方法
[获取构造根据参数类型使用时一般用不带的 代码如下:Constructor&T& getConstructor(Class&?&... parameterTypes) &&&&& 返回一个 Constructor 对象,它反映此 Class 对象所表示的类的指定公共构造方法。 &Constructor&?&[] getConstructors() &&&&& 返回一个包含某些 Constructor 对象的数组,这些对象反映此 Class 对象所表示的类的所有公共构造方法。 &Constructor&T& getDeclaredConstructor(Class&?&... parameterTypes) &&&&& 返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指定构造方法。 &Constructor&?&[] getDeclaredConstructors() &&&&& 返回 Constructor 对象的一个数组,这些对象反映此 Class 对象表示的类声明的所有构造方法。[获取属性根据属性名使用时一般用是带的因为属性一般都是私有的 代码如下:Field getField(String name) &&&&& 返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段。 &Field[] getFields() &&&&& 返回一个包含某些 Field 对象的数组,这些对象反映此 Class 对象所表示的类或接口的所有可访问公共字段。 &Field getDeclaredField(String name) &&&&& 返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段。 &Field[] getDeclaredFields() &&&&& 返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段。[获取方法&方法名加上参数类型&](使用时一般用不带declared的) 代码如下:Method getMethod(String name, Class&?&... parameterTypes) &&&&& 返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。 &Method[] getMethods() &&&&& 返回一个包含某些 Method 对象的数组,这些对象反映此 Class 对象所表示的类或接口(包括那些由该类或接口声明的以及从超类和超接口继承的那些的类或接口)的公共 member 方法。 &Method getDeclaredMethod(String name, Class&?&... parameterTypes) &&&&& 返回一个 Method 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明方法。 &Method[] getDeclaredMethods() &&&&& 返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。 &T newInstance() &&&&& 创建此 Class 对象所表示的类的一个新实例。 &new Instance()可以动态的创建对象&&String toString() &&&&& 将对象转换为字符串。注意:
new Instance()调用的是无参构造,如果该类没有无参构造方法,则newInstance()会产生异常.
有declared的方法是支持私有,但是不支持继承,无declared的方法支持继承,不支持私有,且只能取出public的东西.
因此取属性的时候一般来说是带declared的,因为属性一般都是私有的,取方法时一般是不带declared的,取构造时一般也是不带declared的.
实例模拟反射获取类中的相关属性和方法
利用反射对属性赋值
Field中的方法
&Object get(Object obj)
& 返回指定对象上此 Field 表示的字段的值。
&&&&& Field f = c.getXXField(属性名);
&&&&& 值 = f.get(对象);
&void set(Object obj, Object value)
& 将指定对象变量上此 Field 对象表示的字段设置为指定的新值。
& f.set(对象,值);
&Class&?& getType()
& 返回一个 Class 对象,它标识了此 Field 对象所表示字段的声明类型。
&&&&& 用于获取属性的类型(返回Class对象). 代码如下:Class c = Student.&&& Object obj& = c.newInstance();&&&&&&&&&&& //创建Student类的对象&&& Field f = c.getDeclaredField("name");&&&&&&& //获取name属性&&& f.setAccessible(true);&&&&&&&&&&&&&&&&&&& //设置私有可以访问.&&& f.set(obj, "zhangsan");&&& System.out.println(f.get(obj));&&&&&&&&&&&& //获取obj的name属性的值.利用反射调用构造
对于构造真正调用是在调用newInstance()方法时. 代码如下:Class c = Class.forName("com.clazz.reflect.Student");&&& Constructor con = c.getConstructor();&&&&&&&& //没有执行构造,&&& Object cObj = c.getConstructor().newInstance();//调用无参的构造方法&&& Constructor conAll = c.getConstructor(int.class,String.class,int.class);&&& Object caobj = conAll.newInstance(1001,"zjamgs",234235);//调用含参的构造方法.&&& System.out.println(caobj);&&&&&&&&&&&&&&&&& //打印输出利用反射调用方法
对象.方法名(值1,2,3);
Method m = c.getMethoed(方法名,参数类型...);
m.invoke(对象,方法调用的参数 )如果底层方法所需的形参数为 0,则所提供的 args 数组长度可以为 0 或 null。 代码如下:Class c = Class.forName("com.clazz.reflect.Student");&&& Object obj = c.newInstance();&&& //创建Sutdent对象.&&& Method msetName = c.getMethod("setName", String.class);//obj无须转换类型&&& msetName.invoke(obj, "zhangsan");//调用方法setName, 并传参.&&& Method msetId = c.getMethod("setId", int.class);&&& msetId.invoke(obj, );&&& System.out.println(obj);反射应用实例
实体类 代码如下:package org.dennisit.reflect.import java.io.S/**&*&*& User.java&&& &*&*& @version : 1.1&*& &*& @author& : 苏若年&&& &a href="mailto:"&发送邮件&/a&&*&&& &*& @since&&&& : 1.0&&&&&&& 创建时间:&&& &&&&&&& 下午01:43:56&*&&&& &*& TODO&&&& :&&& class User.java is used for ...&*&*/public class User implements Serializable{
&&& private S&&& public void execute(String name,int age){&&&&&&& System.out.println("name=" + name + ",age=" + age);&&& }}反射测试类 代码如下:package org.dennisit.reflect.import java.lang.reflect.F/**&*&*& ReflectEx.java&&& &*&*& @version : 1.1&*& &*& @author& : 苏若年&&& &a href="mailto:"&发送邮件&/a&&*&&& &*& @since&&&& : 1.0&&&&&&& 创建时间:&&& &&&&&&& 下午01:46:00&*&&&& &*& TODO&&&& :&&& class ReflectEx.java is used for ...&*&*/public class ReflectEx {
&&& public static void main(String[] args)throws Exception {&&&&&&& Class cls = Class.forName("org.dennisit.reflect.entity.User");&&&&&&& Object obj = cls.newInstance();&&&&&& //创建User的对象&&&&&&& Field f = cls.getDeclaredField("test");&&& //获取test属性&&&&&&& f.setAccessible(true);&&&&&&&&&&&&&&&&&&& //打开私有属性test的访问权限&&&&&&& f.set(obj, "zhangsan");&&&&&&&&&&&&&&&&&&& //为test重新复制&&&&&&& System.out.println(f.get(obj));&&&&&&&&&&& //获取obj的test属性值&&&&&&& //根据方法名execute获取方法&&&&&&& java.lang.reflect.Method m = cls.getMethod("execute", String.class, int.class);&&&&&&& m.invoke(obj, "dennisit",23);&&&&&&&&&&& //调用execute方法&&& }}运行效果 代码如下:zhangsanname=dennisit,age=23编写一个反射动态实例化类的例子 代码如下:package org.dennisit.reflect.import java.lang.reflect.Fimport java.lang.reflect.Mimport java.util.Mimport java.util.S/**&*&*& DynamicReflect.java&&& &*&*& @version : 1.1&*& &*& @author& : 苏若年&&& &a href="mailto:"&发送邮件&/a&&*&&& &*& @since&&&& : 1.0&&&&&&& 创建时间:&&& &&&&&&& 下午01:58:12&*&&&& &*& TODO&&&& :&&& 利用反射动态实例化的例子&*&*/public class DynamicReflect {
&&& public static Object getInstance(String className,Map&String,Object& map)throws Exception{&&&&&&& Class c = Class.forName(className);&&&&&&& Object obj = c.newInstance();&&&&&&&&&&&&&&& //对象对象&&&&&&& Set&String& keys = map.keySet();&&&&&&&&&&& //获取对应的所有属性&&&&&&& Field[] fAll = c.getDeclaredFields();&&&&&&& //获取类中所有属性&&&&&&& for(int i=0;i&fAll.i++){&&&&&&&&&&& for(String key:keys){&&&&&&&&&&&&&&&&&&& //循环匹配&&&&&&&&&&&&&&& if(fAll[i].getName().equals(key)){&&& //如果用户传入的属性跟获取到的类中的属性名匹配&&&&&&&&&&&&&&&&&&& Field f = c.getDeclaredField(key);//获取该属性&&&&&&&&&&&&&&&&&&& //构建setXxx()方法名&&&&&&&&&&&&&&&&&&& String methodName = "set" + key.substring(0,1).toUpperCase()+key.substring(1);&&&&&&&&&&&&&&&&&&& Method method = c.getMethod(methodName, f.getType());//根据构建的用户名获取对应的方法&&&&&&&&&&&&&&&&&&& method.invoke(obj, map.get(key));//方法调用&&&&&&&&&&&&&&& }else{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&& }&&&&&&& }&&&&&&&&&& }}接下来我们测试我们编写的动态反射实例化例子
实体类 代码如下:package org.dennisit.reflect.import java.io.S/**&*&*& User.java&&& &*&*& @version : 1.1&*& &*& @author& : 苏若年&&& &a href="mailto:"&发送邮件&/a&&*&&& &*& @since&&&& : 1.0&&&&&&& 创建时间:&&& &&&&&&& 下午01:43:56&*&&&& &*& TODO&&&& :&&& 实体类&*&*/public class User implements Serializable{
&&& private S&&&&&& private S&&& public User() {& //必须有无参构造&&& }
&&& //getter() and setter()&&& }主测试类 代码如下:package org.dennisit.reflect.import java.util.HashMimport java.util.Mimport org.dennisit.reflect.entity.U/**&*&*& ReflectEx.java&&& &*&*& @version : 1.1&*& &*& @author& : 苏若年&&& &a href="mailto:"&发送邮件&/a&&*&&& &*& @since&&&& : 1.0&&&&&&& 创建时间:&&& &&&&&&& 下午01:46:00&*&&&& &*& TODO&&&& :&&& class ReflectEx.java is used for ...&*&*/public class ReflectEx {
&&& public static void main(String[] args)throws Exception {&&&&&&& Class cls = Class.forName("org.dennisit.reflect.entity.User");&&&&&&& String className = "org.dennisit.reflect.entity.User";&&&&&&& Map&String,Object& map = new HashMap&String, Object&();&&&&&&& map.put("name", "dennisit");&&&&&&& map.put("age", 22);&&&&&&& map.put("email", "");&&&&&&& User user = (User)DynamicReflect.getInstance(className, map);&&&&&&& System.out.println(user.getName() + "," + user.getAge() + "," + user.getEmail());&&& }}程序运行结果 代码如下:dennisit,22,
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具暂没有新消息哦~
Java 反射机制
视频太卡?试试切换线路
本课时对反射机制的背景及其实现功能进行了简单阐述。
本课时主要介绍了什么是 Class 对象,Class 对象的常用方法,以及获取 Class 对象的三种方式。
本课时主要介绍了什么是 Field 对象,Field 对象的常用方法,以及 Field 对象的相关操作。
本课时主要介绍了什么是 Method 对象,Method 对象的常用方法,以及 Method 对象的相关操作。
本课时主要讲解了如何实现 Excel 的导入和导出。
本课时主要讲解了如何利用反射机制实现 Excel 的导入导出,并概述了反射机制的强大。
只有成为VIP会员才能提问&回复,快吧!如果你还没有账号你可以一个账号。
添加新技术问题
课程 [反射机制概述]
中已存在问题
添加新技术问题
问题描述越详细,被解答的速度越快
有新回答时请邮件提醒我
着急,拜托快点
不急,慢慢解决
关联课程 [反射机制概述]
服务热线:400-678-8266}

我要回帖

更多关于 oppo r11 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信