基础反射概念之调用构造和普通方法和成员
来源:互联网 发布:苹果手机备份数据 编辑:程序博客网 时间:2024/05/16 07:36
package learn.reflect/假设这个包存的是主类(Reflex),Book类不在此包中,在learn.reflect.way3包中主类,不会出现导入Book类的语句/。
import java.lang.reflect.Constructor;//此类接收一个构造
import java.lang.reflect.Method;//此类接收一个普通方法
/*反射:一般来讲,都是先有类再new一个对象实现实例化,但也可使用反射即用 Class 的 对象来接收你指定的类,Class的对象再调用newInstance()找到这个指定类中的无参构造来实例这个类,产生一个Object对象,那如果是有参构造呢?,在程序中我会说明。
反射调用普通方法我也会说明。
实现方式:
X{
}//X表示某一个类
1.Class《?》cla1=X.getClass();//调用类中的geClass方法获得一个指定类
Object obj1=cla.newInstance();//反射完成,获得一个指定类的实例
2.Class 《?》cla2=X.class;//调用类中的一个class成员获得一个指定类
Object obj2=cla2.newInstance();//反射完成,获得一个指定类的实例
3.Class《?》cla3=Class.forName(“java.learn.reflex.way3”);/调用Class中的静态方法 forName(“String className”),输入一个完整的包.类。这个类就是一个指定类/
Object obj3=Cla3.newInstance();//反射完成,获得一个指定类的实例
*/
public class Reflex{
//如果类中没有无参构造,则要使用Class类中的getConstructor()方法
public static void main(){
/保存指定类的信息,还是声明一个对象,我也不知道,如果有大神看到,告诉我这个萌新吧/
Class 《?》 cla=Class.forName(“learn.reflect.way3.commodity”);
/根据传getconstructor方法中类型和个数来重载构造,返回指定类的不同构造/
Constructor 《?》 con=cla.getConstructor(String.class);
/传入一个String,并且实例完成/
Object obj=con.newInstance(“安全裤”);
//输出验证
System.out.println(obj);
//反射调用普通方法必须要使用Method类的对象来接收。
String fieldName=”price”;//这里的p小写
//(方法名字,此方法的参数)无返回值不用写
Method setMet=cla.getMethod(“set”+initcat(fieldName),double.class);
Method getMet=cla.getMethod(“get”+inincat(fieldName));
setMet.invoke(obj,58.8);//调用底导方法,就是此对象中保存的方法
Sysetm.println.out(getMet.invoke());//输出返回值验证
}
public static String initcap(String reviseFieldName){//让方法名称首字母大写
return reviseFieldName.subString(0,1).toUpperCase()+reviseFieldName.subString(1);
/首先截取0—1长度(不包括1)的字符串使首字母大写。再加上截取1长度以后(包括1)的所有字符串使首字母以外的字符串再加进来。/
//用getDeclaredField()来获得成员title并修改
Field fie=cla.getDeclaredField(“title”);
fie.set(obj,”java开发”);
fie.setAccessible(true);//解除封装
System.out.println(fie.get(obj));//输出fie中的属性
}
}
//Book类不在此包中
class commodity{
private String tilte;
private double price=88.8;
public commodity(String title){
this.title=title;
}
public commodity(String title,double price){
this.title=title;
this.price=price;
}
public void setPrice(double price){
this.price=price;
}
public double getPrice(){
return this.price;
}
public String toString(){
return “商品名:”+this.title+”\n”+”售价:”+this.price;
}
}
备注:《》=<>不这样做显示不出来内容
- 基础反射概念之调用构造和普通方法和成员
- JAVA反射调用无参构造、有参构造、普通方法、成员操作
- Android JNI反射调用Java构造方法、成员方法和静态方法
- 反射机制调用普通成员方法
- 反射机制--调用构造函数和成员方法、制作帮助文档
- JAVA高新技术反射机制的原理之构造函数、普通方法和字段
- 构造方法_普通方法_成员变量的反射
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- java基础之反射-通过反射调用某个属性的setter和getter方法
- 纯CSS打造双层Tab
- 新手如何开始写jq插件
- Unity Mecanim动画的实现(九):动画层、遮罩与Ik动画
- Handler过程剖析-傻瓜都能看懂的过程图
- AsyncTask的基本使用
- 基础反射概念之调用构造和普通方法和成员
- 代码检视九句箴言
- 建配置文件方法以及处理编码集为UTF-8步骤 Oracle数据库的连接配置内含读取配置类
- 字典树模板
- TOJ 3496.Summation
- 广告不随滚动条的滚动而滚动
- CMOS Sensor的调试经验分享
- getPackageInfo has exception: com.qzone getApn has exception: No permission to write
- 用机器学习计算工作技能匹配度