Android插件化开发基础之Java反射机制研究(2)

简介: Android插件化开发基础之Java反射机制研究(2)

十一、操作数组

int tmp[] = {1,2,3};

Class<?> c  = tmp.getClass().getComponentType();

Array.getLength(tmp);        //tmp数组的长度

c.getName();           //获得数组类型名称

Array.get(Object obj,int index);      //获得obj数组的index索引的数值

Array.set(Object obj,int index,VALUE);    //设置obj数组的index索引的数值为value;

Object obj  = Array.newInstance(c,length);          //c为数组的类型,length为数组的长度;obj为返回的数组对象;

import java.lang.reflect.*;  
public class GetMethodDemo01{  
    public static void main(String args[])throws Exception{  
        Class<?> c1 = Class.forName("Person");  
        Method m = c1.getMethod("sayHello");  
        m.invoke(c1.newInstance());  
        Method m2 = c1.getMethod("sayHello2",String.class,int.class);  
        String str = (String)m2.invoke(c1.newInstance(),"xiazdong",123);  
        System.out.println(str);  
        Field nameField = c1.getDeclaredField("name");  
        Field ageField = c1.getDeclaredField("age");  
        nameField.setAccessible(true);  
        ageField.setAccessible(true);  
        Person obj = (Person)c1.newInstance();  
        obj.setName("xzdong");  
        obj.setAge(12);  
        System.out.println(nameField.get(obj));  
        System.out.println(ageField.get(obj));  
        Method setName = c1.getMethod("setName",String.class);  
        setName.invoke(obj,"changed");  
        Method getName = c1.getMethod("getName");  
        System.out.println(getName.invoke(obj));  
        int tmp[] = {1,2,3};  
        Class<?> c3 = tmp.getClass().getComponentType();  
        System.out.println(c3.getName());  
        System.out.println("第一个数:"+Array.get(tmp,0));  
        Array.set(tmp,0,5);  
        System.out.println("第一个数:"+Array.get(tmp,0));  
        Object arr = Array.newInstance(c3,5);  
        System.arraycopy(tmp,0,arr,0,Array.getLength(tmp));  
        System.out.println(Array.get(arr,2));  
        System.out.println(Array.get(arr,3));  
    }  
}  
import java.lang.reflect.*;
public class GetMethodDemo01{
  public static void main(String args[])throws Exception{
    Class<?> c1 = Class.forName("Person");
    Method m = c1.getMethod("sayHello");
    m.invoke(c1.newInstance());
    Method m2 = c1.getMethod("sayHello2",String.class,int.class);
    String str = (String)m2.invoke(c1.newInstance(),"xiazdong",123);
    System.out.println(str);
    Field nameField = c1.getDeclaredField("name");
    Field ageField = c1.getDeclaredField("age");
    nameField.setAccessible(true);
    ageField.setAccessible(true);
    Person obj = (Person)c1.newInstance();
    obj.setName("xzdong");
    obj.setAge(12);
    System.out.println(nameField.get(obj));
    System.out.println(ageField.get(obj));
    Method setName = c1.getMethod("setName",String.class);
    setName.invoke(obj,"changed");
    Method getName = c1.getMethod("getName");
    System.out.println(getName.invoke(obj));
    int tmp[] = {1,2,3};
    Class<?> c3 = tmp.getClass().getComponentType();
    System.out.println(c3.getName());
    System.out.println("第一个数:"+Array.get(tmp,0));
    Array.set(tmp,0,5);
    System.out.println("第一个数:"+Array.get(tmp,0));
    Object arr = Array.newInstance(c3,5);
    System.arraycopy(tmp,0,arr,0,Array.getLength(tmp));
    System.out.println(Array.get(arr,2));
    System.out.println(Array.get(arr,3));
  }
}
import java.lang.reflect.*;  
interface China{  
    public static final String NAME = "CHINA";  
    public int AGE = 60;  
    public void sayHello();  
    public String sayHello2(String name,int age);  
}  
class Person implements China{  
    private String name;  
    private int age;  
    public String getName(){  
        return name;  
    }  
    public void setName(String name){  
        this.name = name;  
    }  
    public int getAge(){  
        return age;  
    }  
    public void setAge(int age){  
        this.age = age;  
    }  
    public void sayHello(){  
        System.out.println(NAME+"  "+AGE);  
    }  
    public String sayHello2(String name,int age){  
        return name+" "+age;  
    }  
}  
import java.lang.reflect.*;  
interface China{  
    public static final String NAME = "CHINA";  
    public int AGE = 60;  
    public void sayHello();  
    public String sayHello2(String name,int age);  
}  
class Person implements China{  
    private String name;  
    private int age;  
    public String getName(){  
        return name;  
    }  
    public void setName(String name){  
        this.name = name;  
    }  
    public int getAge(){  
        return age;  
    }  
    public void setAge(int age){  
        this.age = age;  
    }  
    public void sayHello(){  
        System.out.println(NAME+"  "+AGE);  
    }  
    public String sayHello2(String name,int age){  
        return name+" "+age;  
    }  
}  
相关文章
|
21小时前
|
Java
解析Java中的反射机制应用
解析Java中的反射机制应用
|
22小时前
|
设计模式 缓存 Java
Java中的反射机制:使用场景与注意事项
Java中的反射机制:使用场景与注意事项
|
2天前
|
监控 算法 Java
Java中的垃圾收集机制:原理与实践
在Java的内存管理领域中,垃圾收集(Garbage Collection, GC)扮演着至关重要的角色。本文旨在通过数据导向的分析,科学严谨地阐述垃圾收集的原理、类型及其对性能的影响,并结合逻辑严密的论证,探讨开发者如何有效管理内存以及优化GC策略。文章将引用实验证据和权威统计数据,深入解读垃圾收集器的工作机制,并通过实际案例展示如何调优以提高应用程序的性能。
5 0
|
3天前
|
安全 Java 数据库连接
Java中的反射机制详解:动态类加载与调用
Java中的反射机制详解:动态类加载与调用
|
3天前
|
SQL 缓存 Java
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
|
4天前
|
存储 安全 Java
Java泛型:深度解析编译时类型安全的核心机制
【6月更文挑战第28天】Java泛型自JDK 1.5起增强了代码安全与复用。它们允许类、接口和方法使用类型参数,如`&lt;T&gt;`在`Box&lt;T&gt;`中。泛型确保编译时类型安全,例如`List&lt;String&gt;`防止了运行时ClassCastException。尽管运行时存在类型擦除,编译时检查仍保障安全。理解泛型核心机制对于优化Java编程至关重要。
|
4天前
|
Java API
java之反射机制
java之反射机制
|
4天前
|
Java 数据库连接 调度
Java多线程,对锁机制的进一步分析
Java多线程,对锁机制的进一步分析
|
5天前
|
存储 缓存 监控
Java中的数据一致性与分布式锁机制
Java中的数据一致性与分布式锁机制
|
5天前
|
安全 Java C++
深入探究Java中的TransferQueue:机制、特性与应用场景
深入探究Java中的TransferQueue:机制、特性与应用场景