`
hudepin
  • 浏览: 42763 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

PropertyDescriptor

 
阅读更多
/**
 * 
 */
package com.depin.test.propertydescriptor;

import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;

/**
 * @author depinhu
 * 获取javabean 的方法的 两种方法
 *         2012-3-14
 */
public class PropertyDescriptorTest {
	public PropertyDescriptorTest() {
	}

	public static void main(String args[]) {
		TestVo testvo = new TestVo();
		testvo.setName("hello world");
		String propertyName = "name";
		PropertyDescriptor pd = null;
		try {
			pd = new PropertyDescriptor(propertyName, testvo.getClass());
			Method getter = pd.getReadMethod();
			Object value = getter.invoke(testvo);
			System.out.println(value);
			
			System.out.println(getProperty_2(testvo, propertyName));
		} catch (IntrospectionException e) {
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	private static Object getProperty_2(Object pt1, String propertyName)
			throws Exception {
		BeanInfo beanInfo = Introspector.getBeanInfo(pt1.getClass());
		PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
		Object reValue = null;
		for (PropertyDescriptor pd : pds) {
			if (pd.getName().equals(propertyName)) {
				Method methodGetX = pd.getReadMethod();
				reValue = methodGetX.invoke(pt1);
				break;
			}
		}

		return reValue;
	}
}

/**
 * 
 */
package com.depin.test.propertydescriptor;

/**
 * @author depinhu
 * 
 *         2012-3-14
 */
public class TestVo {
	private int age;
	private String name;

	public TestVo() {
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

分享到:
评论
2 楼 hudepin 2012-07-31  
kingdelee 写道
博主的代码是想把hello world改成name吗
我试了怎么都是输出两个hello world
PropertyDescriptor反射没成功?

你理解错了,不是把helloworld改成name,而是通过反射调用bean的get方法,输出hello world 说明就是正确的了
1 楼 kingdelee 2012-07-31  
博主的代码是想把hello world改成name吗
我试了怎么都是输出两个hello world
PropertyDescriptor反射没成功?

相关推荐

    Java通过PropertyDescriptor反射调用set和get方法

    `PropertyDescriptor`是JavaBeans API的一部分,主要用于处理JavaBean属性。本文将详细介绍如何使用`PropertyDescriptor`通过反射来调用Java对象的`set`和`get`方法。 首先,让我们了解`PropertyDescriptor`。`...

    手动动态添加 PropertyGrid 的数据行并显示 C# (非属性绑定方式)

    `PropertyDescriptor`是`System.ComponentModel`命名空间中的类,它代表了对象的一个属性,并提供了读取和写入属性值的方法。 ```csharp PropertyDescriptor descriptor = new CustomPropertyDescriptor(...

    Java 反射创建get set方法及反射方法的调用

    - 这个方法的作用是根据传入的类`clazz`和属性名`propertyName`,返回一个`PropertyDescriptor`对象。 - 首先尝试获取类中的字段,如果找不到对应的字段,则构建`get`和`set`方法名。 - 使用反射机制查找对应的`...

    openbeans1.0.zip

    //import java.beans.PropertyDescriptor; import com.googlecode.openbeans.BeanInfo; import com.googlecode.openbeans.IntrospectionException; import com.googlecode.openbeans.Introspector; import ...

    Java反射中java.beans包学习总结.docx

    首先,我们需要为每个属性创建合适的`PropertyDescriptor`,然后找到对应的`PropertyEditor`,并使用`PropertyDescriptor`的`setValue()`方法将Map中的值设置到对应的属性上。以下是一个简化版的实现: ```java ...

    C# dataGridVeiw多维表头

    在.NET Framework中,C#的DataGridView控件是一个用于显示数据集的强大工具,它允许用户以表格形式查看和编辑数据。然而,标准的DataGridView控件仅支持单层表头,这在处理复杂的数据结构时可能会显得不够用。...

    PropertyGrid 下拉式和弹出编辑框的实现

    首先,`PropertyGrid`控件本身并不直接支持自定义的编辑器,但它允许我们通过实现`ITypeDescriptorContext`、`ICustomTypeDescriptor`和`PropertyDescriptor`接口来自定义属性的显示和编辑方式。这些接口帮助我们...

    PropertyGrid中的枚举显示为中文

    然后,创建一个自定义的`PropertyGrid`类,如`LocalizedPropertyGrid`,并在其中重写`CreateProperty`方法,使用`LocalizedPropertyDescriptor`替代默认的`PropertyDescriptor`: ```csharp public class ...

    winform 属性可扩展性源码

    3. PropertyDescriptor子类:实现自定义的PropertyDescriptor类,如MyPropertyDescriptor,用于处理自定义属性的读写操作和设计时行为。 4. 示例应用程序:一个简单的WinForm应用程序,展示了如何使用这个自定义属性...

    一个关于C# PropertyGrid增加自定义属性的范例。

    自定义`PropertyDescriptor`类可以扩展标准的属性行为,例如改变其显示名称、添加属性标签或使用自定义编辑器。我们需要重写`PropertyDescriptor`的`GetEditor`、`GetValue`和`SetValue`方法。 4. **使用Attribute...

    WinForm控件开发总结(七)-----为复杂属性的子属性提供编辑功能[借鉴].pdf

    为了使属性浏览器支持子属性的独立编辑,我们需要实现`PropertyDescriptor`的两个方法:`GetPropertiesSupported`和`GetProperties`。`GetPropertiesSupported`返回`true`表示该属性支持子属性的编辑,而`...

    用反射和内省技术实现简单SpringIOC

    PropertyDescriptor pd = new PropertyDescriptor("dependency", exampleBean.getClass()); Method writeMethod = pd.getWriteMethod(); writeMethod.invoke(exampleBean, dependencyBean); ``` 此外,还可以实现一...

    PropertyGrid源代码

    源码中,`PropertyGrid`会遍历指定对象的类型信息,通过`PropertyDescriptor`获取每个属性的名称、类型、可读写性等信息,然后在界面上生成相应的控件。 三、参数设置 1. `SelectedObject`:这是`PropertyGrid`最...

    根据数据库表自动产生javabean

    PropertyDescriptor pd = new PropertyDescriptor(propertyName, clazz); Method mt = pd.getWriteMethod(); Type t [] = ms[i].getParameterTypes(); Object [] params = new Object[t.length]; for(int j...

    beanutils-1.9.3-bin

    在由JDK提供的默认的API中,有java.beans包,里面有诸如Introspector,BeanInfo,PropertyDescriptor等用来操作JavaBean的方法, 但是由Apache公司开发的BeanUtils会更常用,同时,BeanUtils还需要配合第三方日志...

    c#使用bindlist绑定datagridview不能自动排序的解决类

    protected override void ApplySortCore(PropertyDescriptor prop, ListSortDirection direction) { isSortedCore = true; sortPropertyCore = prop; sortDirectionCore = direction; Sort(); } protected ...

    FilteredPropertyGrid_demo.zip

    `TypeDescriptor`是.NET框架中用于提供类型信息的类,而`PropertyDescriptor`则表示对象的一个属性,包括其名称、类型和可读写性等。通过重写这些类的方法,我们可以决定哪些属性应该在`PropertyGrid`中显示,哪些应...

    给propertyGrid动态添加属性

    1. **创建属性类**: 首先,你需要创建一个自定义属性类,继承自`System.ComponentModel.PropertyDescriptor`。这个类将作为动态属性的载体,需要重写一些关键方法,如`GetComponentType()`、`GetValue()`和`SetValue...

    Unleash PropertyGrid with Dynamic Properties and Globalization演示代码及demo

    例如,你可以创建一个自定义`PropertyDescriptor`子类,覆盖其`CanResetValue`、`GetValue`、`SetValue`等方法,然后在运行时将它添加到`PropertyGrid`的`Attributes`集合中。 2. **Globalization**: 全球化...

Global site tag (gtag.js) - Google Analytics