1。代码importjava。util。;importjava。io。;importjava。lang。reflect。;publicclassExtendedObjectPoolFactory{定义一个对象池,前面是对象名,后面是实际对象privateMapString,ObjectobjectPoolnewHashMap();privatePropertiesconfignewProperties();从指定属性文件中初始化Properties对象publicvoidinit(StringfileName){try(FileInputStreamfisnewFileInputStream(fileName)){config。load(fis);}catch(IOExceptionex){System。out。println(读取fileName异常);}}定义一个创建对象的方法,该方法只要传入一个字符串类名,程序可以根据该类名生成Java对象privateObjectcreateObject(StringclazzName)throwsInstantiationException,IllegalAccessException,ClassNotFoundException{根据字符串来获取对应的Class对象Classlt;?clazzClass。forName(clazzName);使用clazz对应类的默认构造器创建实例returnclazz。newInstance();}该方法根据指定文件来初始化对象池,它会根据配置文件来创建对象publicvoidinitPool()throwsInstantiationException,IllegalAccessException,ClassNotFoundException{for(Stringname:config。stringPropertyNames()){每取出一对keyvalue对,如果key中不包含百分号()这就标明是根据value来创建一个对象调用createObject创建对象,并将对象添加到对象池中if(!name。contains()){objectPool。put(name,createObject(config。getProperty(name)));}}}该方法将会根据属性文件来调用指定对象的setter方法publicvoidinitProperty()throwsInvocationTargetException,IllegalAccessException,NoSuchMethodException{for(Stringname:config。stringPropertyNames()){每取出一对keyvalue对,如果key中包含百分号()即可认为该key用于控制调用对象的setter方法设置值,前半为对象名字,后半控制setter方法名if(name。contains()){将配置文件中key按分割String〔〕objAndPropname。split();取出调用setter方法的参数值ObjecttargetgetObject(objAndProp〔0〕);获取setter方法名:set首字母大写剩下部分StringmtdNamesetobjAndProp〔1〕。substring(0,1)。toUpperCase()objAndProp〔1〕。substring(1);通过target的getClass()获取它实现类所对应的Class对象Classlt;?targetClasstarget。getClass();获取希望调用的setter方法MethodmtdtargetClass。getMethod(mtdName,String。class);通过Method的invoke方法执行setter方法,将config。getProperty(name)的值作为调用setter的方法的参数mtd。invoke(target,config。getProperty(name));}}}publicObjectgetObject(Stringname){从objectPool中取出指定name对应的对象。returnobjectPool。get(name);}publicstaticvoidmain(String〔〕args)throwsException{ExtendedObjectPoolFactoryepfnewExtendedObjectPoolFactory();epf。init(extObj。txt);epf。initPool();epf。initProperty();System。out。println(epf。getObject(a));}}2。配置ajavax。swing。JFramebjavax。swing。JLabelsetthetitleofaatitleTestTitle3。运行E:Java疯狂java讲义codes1818。4javaExtendedObjectPoolFactoryjavax。swing。JFrame〔frame0,0,0,0x0,invalid,hidden,layoutjava。awt。BorderLayout,titleTestTitle,resizable,normal,defaultCloseOperationHIDEONCLOSE,rootPanejavax。swing。JRootPane〔,0,0,0x0,invalid,layoutjavax。swing。JRootPaneRootLayout,alignmentX0。0,alignmentY0。0,border,flags16777673,maximumSize,minimumSize,preferredSize〕,rootPaneCheckingEnabledtrue〕 以上就是动力节点小编介绍的Java反射调用方法示例的内容,希望对大家有帮助。 动力节点Java培训;http:www。bjpowernode。com