java getgenericparametertypes_java.lang.reflect.Constructor.getGenericParameterTypes()方法示例

java.lang.reflect.Constructor.getGenericParameterTypes()方法返回一个Type对象数组,它以声明顺序表示由此构造方法对象表示的方法的形式参数类型。 如果底层方法没有参数,则返回长度为0的数组。

声明

以下是java.lang.reflect.Constructor.getGenericParameterTypes()方法的声明。

public Type[] getGenericParameterTypes()

返回值

一个类型的数组,以声明顺序表示底层方法的形式参数类型。

异常

GenericSignatureFormatError - 如果通用方法签名不符合Java虚拟机规范中指定的格式。

TypeNotPresentException - 如果底层方法的throws子句引用不存在的类型声明。

MalformedParameterizedTypeException - 如果底层方法的throws子句引用了由于任何原因无法实例化的参数化类型。

例子

以下示例显示了java.lang.reflect.Constructor.getGenericParameterTypes()方法的用法。

import java.lang.reflect.Constructor;

import java.lang.reflect.Type;

public class GetGenericParameterTypes {

public static void main(String[] args) {

Constructor[] constructors = SampleClass.class.getConstructors();

Type[] parameters = constructors[1].getGenericParameterTypes();

for (int i = 0; i < parameters.length; i++) {

System.out.println(parameters[i]);

}

}

}

class SampleClass {

private String sampleField;

public SampleClass() throws ArrayIndexOutOfBoundsException {

}

public SampleClass(String sampleField){

this.sampleField = sampleField;

}

public String getSampleField() {

return sampleField;

}

public void setSampleField(String sampleField) {

this.sampleField = sampleField;

}

}

让我们编译并运行上面的程序,这将产生以下结果 -

class java.lang.String

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.bjsasc.finance.common.utils; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; public class JavaBeanUtil { /** * * @param source 被复制的实体类对象 * @param to 复制完后的实体类对象 * @throws Exception */ public static void Copy(Object source, Object to) throws Exception { // 获取属性 BeanInfo sourceBean = Introspector.getBeanInfo(source.getClass(),java.lang.Object.class); PropertyDescriptor[] sourceProperty = sourceBean.getPropertyDescriptors(); BeanInfo destBean = Introspector.getBeanInfo(to.getClass(),java.lang.Object.class); PropertyDescriptor[] destProperty = destBean.getPropertyDescriptors(); try { for (int i = 0; i < sourceProperty.length; i++) { for (int j = 0; j < destProperty.length; j++) { if (sourceProperty[i].getName().equals(destProperty[j].getName())) { // 调用source的getter方法和dest的setter方法 destProperty[j].getWriteMethod().invoke(to,sourceProperty[i].getReadMethod().invoke(source)); break; } } } } catch (Exception e) { throw new Exception("属性复制失败:" + e.getMessage()); } } /** * Pojo -> Map<String, Object> * @param obj * @return * @throws Exception */ public static Map<String,Object> object2Map(Object obj)throws Exception{ Map<String,Object> map =new HashMap<>(); Field[] fields = obj.getClass().getDeclaredFields(); for(Field field:fields){ field.setAccessible(true); map.put(field.getName(), field.get(obj)); } return map; } } 帮我优化下这个代码,考虑对象中有对象和对象集合的情况
最新发布
04-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值