/**
*
*/
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;
}
}
分享到:
相关推荐
`PropertyDescriptor`是JavaBeans API的一部分,主要用于处理JavaBean属性。本文将详细介绍如何使用`PropertyDescriptor`通过反射来调用Java对象的`set`和`get`方法。 首先,让我们了解`PropertyDescriptor`。`...
`PropertyDescriptor`是`System.ComponentModel`命名空间中的类,它代表了对象的一个属性,并提供了读取和写入属性值的方法。 ```csharp PropertyDescriptor descriptor = new CustomPropertyDescriptor(...
- 这个方法的作用是根据传入的类`clazz`和属性名`propertyName`,返回一个`PropertyDescriptor`对象。 - 首先尝试获取类中的字段,如果找不到对应的字段,则构建`get`和`set`方法名。 - 使用反射机制查找对应的`...
//import java.beans.PropertyDescriptor; import com.googlecode.openbeans.BeanInfo; import com.googlecode.openbeans.IntrospectionException; import com.googlecode.openbeans.Introspector; import ...
首先,我们需要为每个属性创建合适的`PropertyDescriptor`,然后找到对应的`PropertyEditor`,并使用`PropertyDescriptor`的`setValue()`方法将Map中的值设置到对应的属性上。以下是一个简化版的实现: ```java ...
在.NET Framework中,C#的DataGridView控件是一个用于显示数据集的强大工具,它允许用户以表格形式查看和编辑数据。然而,标准的DataGridView控件仅支持单层表头,这在处理复杂的数据结构时可能会显得不够用。...
首先,`PropertyGrid`控件本身并不直接支持自定义的编辑器,但它允许我们通过实现`ITypeDescriptorContext`、`ICustomTypeDescriptor`和`PropertyDescriptor`接口来自定义属性的显示和编辑方式。这些接口帮助我们...
然后,创建一个自定义的`PropertyGrid`类,如`LocalizedPropertyGrid`,并在其中重写`CreateProperty`方法,使用`LocalizedPropertyDescriptor`替代默认的`PropertyDescriptor`: ```csharp public class ...
3. PropertyDescriptor子类:实现自定义的PropertyDescriptor类,如MyPropertyDescriptor,用于处理自定义属性的读写操作和设计时行为。 4. 示例应用程序:一个简单的WinForm应用程序,展示了如何使用这个自定义属性...
自定义`PropertyDescriptor`类可以扩展标准的属性行为,例如改变其显示名称、添加属性标签或使用自定义编辑器。我们需要重写`PropertyDescriptor`的`GetEditor`、`GetValue`和`SetValue`方法。 4. **使用Attribute...
为了使属性浏览器支持子属性的独立编辑,我们需要实现`PropertyDescriptor`的两个方法:`GetPropertiesSupported`和`GetProperties`。`GetPropertiesSupported`返回`true`表示该属性支持子属性的编辑,而`...
PropertyDescriptor pd = new PropertyDescriptor("dependency", exampleBean.getClass()); Method writeMethod = pd.getWriteMethod(); writeMethod.invoke(exampleBean, dependencyBean); ``` 此外,还可以实现一...
源码中,`PropertyGrid`会遍历指定对象的类型信息,通过`PropertyDescriptor`获取每个属性的名称、类型、可读写性等信息,然后在界面上生成相应的控件。 三、参数设置 1. `SelectedObject`:这是`PropertyGrid`最...
PropertyDescriptor pd = new PropertyDescriptor(propertyName, clazz); Method mt = pd.getWriteMethod(); Type t [] = ms[i].getParameterTypes(); Object [] params = new Object[t.length]; for(int j...
在由JDK提供的默认的API中,有java.beans包,里面有诸如Introspector,BeanInfo,PropertyDescriptor等用来操作JavaBean的方法, 但是由Apache公司开发的BeanUtils会更常用,同时,BeanUtils还需要配合第三方日志...
protected override void ApplySortCore(PropertyDescriptor prop, ListSortDirection direction) { isSortedCore = true; sortPropertyCore = prop; sortDirectionCore = direction; Sort(); } protected ...
`TypeDescriptor`是.NET框架中用于提供类型信息的类,而`PropertyDescriptor`则表示对象的一个属性,包括其名称、类型和可读写性等。通过重写这些类的方法,我们可以决定哪些属性应该在`PropertyGrid`中显示,哪些应...
1. **创建属性类**: 首先,你需要创建一个自定义属性类,继承自`System.ComponentModel.PropertyDescriptor`。这个类将作为动态属性的载体,需要重写一些关键方法,如`GetComponentType()`、`GetValue()`和`SetValue...
例如,你可以创建一个自定义`PropertyDescriptor`子类,覆盖其`CanResetValue`、`GetValue`、`SetValue`等方法,然后在运行时将它添加到`PropertyGrid`的`Attributes`集合中。 2. **Globalization**: 全球化...