JavaBean的简单内省操作 以及复杂内省操作

简介: 2段简单的JavaBean代码演示了简单内省操作以及复杂内省操作  。 1、简单内省操作 package me.test; import java.lang.reflect.*; import java.

2段简单的JavaBean代码演示了简单内省操作以及复杂内省操作  。

1、简单内省操作

package me.test;
import java.lang.reflect.*;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
public class IntroSpectorTest
{
   public  static void main(String []args) throws IntrospectionException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
   {
    JavaBeanTest t=new JavaBeanTest() ;
    t.setX(10);
    PropertyDescriptor d=new PropertyDescriptor("X",JavaBeanTest.class);
    setProperty(t, d);
    Object val = getProperty(t, d);
    System.out.println(val);
   
   }

private static Object getProperty(JavaBeanTest t, PropertyDescriptor d)
  throws IllegalAccessException, InvocationTargetException {
 Method mr=d.getReadMethod()  ;
    Object val=mr.invoke(t);
 return val;
}

private static void setProperty(JavaBeanTest t, PropertyDescriptor d)
  throws IllegalAccessException, InvocationTargetException {
    Method mw=d.getWriteMethod()  ;
    mw.invoke(t, 5) ;
}

}
class  JavaBeanTest
{
 private int x  ;
 public void setX(int x)
 {
  this.x=x ;
 }
 public int getX()
  
 {
  return this.x ;
 }
}

 

2、复杂内省操作   BeanInfo类   Introspector类的使用

package me.test;
import java.lang.reflect.*;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
public class IntroSpectorTest
{
   public  static void main(String []args) throws IntrospectionException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
   {
    JavaBeanTest t=new JavaBeanTest(10) ;
    PropertyDescriptor d=new PropertyDescriptor("x",JavaBeanTest.class);
    setProperty(t, d);
    Object val = getProperty(t, d);
    System.out.println(val);
   
   }

private static Object getProperty(JavaBeanTest t, PropertyDescriptor d)
  throws IllegalAccessException, InvocationTargetException, IntrospectionException {
    BeanInfo beanInfo=Introspector.getBeanInfo(t.getClass()) ;  
 PropertyDescriptor  pt[]=beanInfo.getPropertyDescriptors() ;
  for(PropertyDescriptor tem:pt)
  {
   if(tem.getName().equals(d.getName()))
     {
             Method mr=tem.getReadMethod() ;
             Object val=mr.invoke(t) ;
             return val ;
     }
  }
 return null;

}

private static void setProperty(JavaBeanTest t, PropertyDescriptor d)
  throws IllegalAccessException, InvocationTargetException, IntrospectionException {
   
    BeanInfo beanInfo=Introspector.getBeanInfo(t.getClass() ) ; //把JavaBeanTest的对象当做JavaBean看有什么信息封装在BeanInfo中
    PropertyDescriptor [] pd=beanInfo.getPropertyDescriptors() ;  //Get All Properties From BeanInfo Class
    for(PropertyDescriptor tem:pd)
    {  
     if(tem.getName().equals(d.getName()))
     {
      Method mw=tem.getWriteMethod() ;
      mw.invoke(t, 50)  ;
      break ;
     }
    }
}

}
class  JavaBeanTest
{
 private int x  ;
 public JavaBeanTest(int x)
 {
  this.x=x ;
 }
 public void setX(int x)
 {
  this.x=x ;
 }
 public int getX()
  
 {
  return this.x ;
 }
}

 

 

 

目录
相关文章
|
机器学习/深度学习 分布式计算 Java
Hbase入门(二)——安装与配置
本文讲述如何安装,部署,启停HBase集群,如何通过命令行对Hbase进行基本操作。 并介绍Hbase的配置文件。 在安装前需要将所有先决条件安装完成。
1216 0
Hbase入门(二)——安装与配置
|
Kubernetes Shell Go
Go编程模式 - 7-代码生成
良好的命名能体现出其价值。尤其是在错误码的处理上,无需再去查询错误码对应的错误内容,直接可以通过命名了解。
187 0
|
安全 Unix Java
MSF1
Metasploit是一个开源的、用Ruby脚本语言写的渗透测试框架(Metasploit Framework,MSF),该框架集成了很多可用的渗透利用工具,用户可以在这个框架下进行一系列的渗透测试,利用现有的装备(Payload),如Meterpreter等进一步获取对方的Shell。Metasploit功能强大,可以帮助安全人员评估系统安全性,发现系统的安全漏洞,对漏洞的防范措施进行验证,并提供真正的安全风险情报,因此几乎每一个从事渗透测试的人都会接触到它,是渗透测试最常用的工具。
|
物联网
医疗物联网投资趋势报告:当务之急是抓住机遇
医疗物联网,简称IoHT,是指将医疗领域的“物”(医生、患者、器械等对象)和“网”(基于标准的流程)进行交互、融合,即形成一个“联”的一个过程。医疗物联网可以将原始数据转化为不同对象间简单、易共享、可交互的信息,实现操作效率的提高,同时为人们提供更便捷的医护服务和更畅快的患者体验。
1529 0
|
9天前
|
云安全 监控 安全
|
14天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1563 8
|
8天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
516 15