package org.lxh.demo15.invokedemo ; import java.lang.reflect.Array ; public class ChangeArrayDemo{ public static void main(String args[]) throws Exception{ int temp[] = {1,2,3} ;// 声明一整型数组 int newTemp[] = (int []) arrayInc(temp,5) ; // 重新开辟空间5 print(newTemp) ; System.out.println("\n-------------------------") ; String t[] = {"lxh","mldn","mldnjava"} ; String nt[] = (String [])arrayInc(t,8) ; print(nt) ; } public static Object arrayInc(Object obj,int len){ Class<?> c = obj.getClass() ; Class<?> arr = c.getComponentType() ; // 得到数组的 Object newO = Array.newInstance(arr,len) ; // 开辟新的大小 int co = Array.getLength(obj) ; System.arraycopy(obj,0,newO,0,co) ; // 拷贝内容 return newO ; } public static void print(Object obj){ // 数组输出 Class<?> c = obj.getClass() ; if(!c.isArray()){ // 判断是否是数组 return; } Class<?> arr = c.getComponentType() ; System.out.println(arr.getName()+"数组的长度是:" + Array.getLength(obj)) ; // 输出数组信息 for(int i=0;i<Array.getLength(obj);i++){ System.out.print(Array.get(obj,i) + "、") ; // 通过Array输出 } } };
package org.lxh.demo15.invokedemo ; import java.lang.reflect.Array ; public class ClassArrayDemo{ public static void main(String args[]) throws Exception{ int temp[] = {1,2,3} ;// 声明一整型数组 Class<?> c = temp.getClass().getComponentType() ; // 取得数组的Class对象 System.out.println("类型:" + c.getName()) ; // 取得数组类型名称 System.out.println("长度:" + Array.getLength(temp)) ; System.out.println("第一个内容:" + Array.get(temp,0)) ; Array.set(temp,0,6) ; System.out.println("第一个内容:" + Array.get(temp,0)) ; } };
package org.lxh.demo15.invokedemo ; import java.lang.reflect.Field ; public class InvokeFieldDemo{ public static void main(String args[]) throws Exception{ Class<?> c1 = null ; Object obj = null ; c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化Class对象 obj = c1.newInstance() ; Field nameField = null ; Field ageField = null ; nameField = c1.getDeclaredField("name") ; // 取得name属性 ageField = c1.getDeclaredField("age") ; // 取得name属性 nameField.setAccessible(true) ; // 此属性对外部可见 ageField.setAccessible(true) ; // 此属性对外部可见 nameField.set(obj,"李兴华") ; // 设置name属性内容 ageField.set(obj,30) ; // 设置age属性内容 System.out.println("姓名:" + nameField.get(obj)) ; System.out.println("年龄:" + ageField.get(obj)) ; } };
package org.lxh.demo15.invokedemo ; import java.lang.reflect.Method ; public class InvokeSayChinaDemo{ public static void main(String args[]){ Class<?> c1 = null ; try{ c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化Class对象 }catch(Exception e){} try{ Method met = c1.getMethod("sayChina") ; // 找到sayChina()方法 met.invoke(c1.newInstance()) ; // 调用方法 }catch(Exception e){ e.printStackTrace() ; } } };
package org.lxh.demo15.invokedemo ; import java.lang.reflect.Method ; public class InvokeSayHelloDemo{ public static void main(String args[]){ Class<?> c1 = null ; try{ c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化Class对象 }catch(Exception e){} try{ Method met = c1.getMethod("sayHello",String.class,int.class) ; // 找到sayChina()方法 String rv = null ; rv = (String)met.invoke(c1.newInstance(),"李兴华",30) ; // 调用方法 System.out.println(rv) ; }catch(Exception e){ e.printStackTrace() ; } } };
package org.lxh.demo15.invokedemo ; import java.lang.reflect.Method ; public class InvokeSetGetDemo{ public static void main(String args[]){ Class<?> c1 = null ; Object obj = null ; try{ c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化Class对象 }catch(Exception e){} try{ obj = c1.newInstance() ; }catch(Exception e){} setter(obj,"name","李兴华",String.class) ; // 调用setter方法 setter(obj,"age",30,int.class) ; // 调用setter方法 System.out.print("姓名:") ; getter(obj,"name") ; System.out.print("年龄:") ; getter(obj,"age"); } /** Object obj:要操作的对象 String att:要操作的属性 Object value:要设置的属性内容 Class<?> type:要设置的属性类型 */ public static void setter(Object obj,String att,Object value,Class<?> type){ try{ Method met = obj.getClass().getMethod("set"+initStr(att),type) ; // 得到setter方法 met.invoke(obj,value) ; // 设置setter的内容 }catch(Exception e){ e.printStackTrace() ; } } public static void getter(Object obj,String att){ try{ Method met = obj.getClass().getMethod("get"+initStr(att)) ; // 得到setter方法 System.out.println(met.invoke(obj)) ; // 调用getter取得内容 }catch(Exception e){ e.printStackTrace() ; } } public static String initStr(String old){ // 将单词的首字母大写 String str = old.substring(0,1).toUpperCase() + old.substring(1) ; return str ; } };
package org.lxh.demo15 ; interface China{ // 定义China接口 public static final String NATIONAL = "China" ; // 定义全局常量 public static final String AUTHOR = "李兴华" ; // 定义全局常量 public void sayChina() ; // 无参的,没有返回值的方法 public String sayHello(String name,int age) ; // 定义有两个参数的方法,并返回内容 } public class Person implements China{ private String name ; private int age ; public Person(){ // 无参构造 } public Person(String name){ this.name = name ; // 设置name属性 } public Person(String name,int age){ this(name) ; this.age = age ; } public void sayChina(){ // 覆写方法 System.out.println("作者:" + AUTHOR + ",国籍:" + NATIONAL) ; } public String sayHello(String name,int age){ return name + ",你好!我今年:" + age + "岁了!" ; } public void setName(String name){ this.name = name ; } public void setAge(int age){ this.age = age ; } public String getName(){ return this.name ; } public int getAge(){ return this.age ; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理