JavaBean_重构_内省操作

类加载器的方式管理资源和配置文件
    InputStream ips = (InputStream)
  

ReflectTest.class.getClassLoader().getResourceAsStream("包名/文件名");//字节码.类加载器.取相对路径.文件名
   
 InputStream ipc =  (InputStream)
    

ReflectTest.class.getResourceAsStream("resources/文件名" ); //字节码.取相对路径("子路经/文件名")
  
  
 InputStream iph =  (InputStream)
    

ReflectTest.class.getResourceAsStream("/包名/子路经/文件名");//字节码.取相对路径("/包名/子路经/文件名名");  前面有"/"的,表示根路径,需要写上包名/文件名。

 

JavaBean的属性名命名规则:
Age-->如果除去“get”“set”后剩下的字母段,第二个

字母是小写的,那么该JavaBean属性名就应该是小写的。
例如:
gettime-->time
getTime-->time
getCPU-->CPU


package cn.itcast.day1;

import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import

java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class IneroSpectorTest {
 /**
  * @param args
  * @throws IntrospectionException
  * @throws InvocationTargetException
  * @throws IllegalAccessException
  * @throws IllegalArgumentException
  */
 public static void main(String[] args)

throws
 IntrospectionException,

IllegalArgumentException,

IllegalAccessException,

InvocationTargetException {
  // TODO Auto-generated method

stub
  ReflectPoint pt1 = new

ReflectPoint(2, 7);    //调用构造方法创建实验对象String propertyName = "y";       //这里把需要操作的属性名单独赋值,可能是为了以后更改方便吧     
  PropertyDescriptor pd = new
      PropertyDescriptor(propertyName, pt1.getClass());  //参数为“属性名”“类名”
  Method methodGetY = pd.getReadMethod();       //把PropertyDescriptor类的其中一个属性getReadMethod  赋值给一个变量
  Object retVal = methodGetY.invoke(pt1);     //把以上操作包装成一个对象,并使用该对象的invoke()方法取值。
  System.out.println(retVal);
 }
}


重构_内省的简单应用

package cn.itcast.day1;

import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import

java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class IneroSpectorTest {
 /**
  * @param args
  * @throws IntrospectionException
  * @throws InvocationTargetException
  * @throws IllegalAccessException
  * @throws IllegalArgumentException
  */
 public static void main(String[] args)

throws
 IntrospectionException,

IllegalArgumentException,

IllegalAccessException,

InvocationTargetException {
  // TODO Auto-generated method

stub
  ReflectPoint pt1 = new ReflectPoint(4, 7);    //调用构造方法创建实验对象
  String propertyName = "y";       //这里把需要操作的属性名单独赋值,可能是为了以后更改方便吧     
  PropertyDescriptor pd = getPropert(pt1, propertyName);     //把以上操作包装成一个对象,并使用该对象的invoke()方法取值。
  //System.out.println(retVal);
  
  Object value = 7;
  
  setProperties(pt1, propertyName, value);
  
  System.out.println(pt1.getX());
 }

 private static void setProperties(Object pt1, String propertyName,Object value) throws IntrospectionException,
   IllegalAccessException,

InvocationTargetException {
  PropertyDescriptor pd2 = new PropertyDescriptor(propertyName, pt1.getClass());
  Method methodSetX = pd2.getWriteMethod(); methodSetX.invoke(pt1, value);
 }

 private static PropertyDescriptor getPropert(Object pt1,String propertyName) throws IntrospectionException,
   IllegalAccessException, InvocationTargetException {
  PropertyDescriptor pd = new PropertyDescriptor(propertyName, pt1.getClass());  //参数为“属性名”“类名”
  Method methodGetY = pd.getReadMethod();       //把PropertyDescriptor类的其中一个属性getReadMethod  赋值给一个变量
  Object retVal = methodGetY.invoke(pt1);
  return pd;
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值