zoukankan      html  css  js  c++  java
  • 反射常见方法

    package Demo1; 
    
    import java.io.InputStream;
    import java.util.List;
    //被反射类
    public class person { 
        public String name="li liangliang";
        public person()
        {
            System.out.print("my name is person");
        }
        public person(String name,int age)
        {
            System.out.println("name="+ name+"   age="+age);
        }
        private person(String name)
        {
            System.out.print(name);
        }
        public void aal()
        {
            System.out.println("aal");
        }
        public void aal(String name,int password)
        {
            System.out.print(name+":"+"password"+password);
        }
        public Class[] aal(String name,int[] password)
        {
            return new Class[]{String.class};
        }
        private void aal(InputStream in)
        {
            System.out.print(in);
        }
        public static void aal(int num)
        {
            System.out.println(num);
        }
    }

    反射

    package Demo1;
    
    import static org.junit.Assert.*;
    
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Method;
    
    import org.junit.Test;
    
    public class Demo1TestTest {
        //反射public void aal()
        @Test
        public void Test1()throws Exception{
            person p=new person();
            Class clazz=Class.forName("Demo1.person");
            Method method=clazz.getMethod("aal", null);
            method.invoke(p,null);
        }
        //反射public void aal(String name,int password)
        public void Test2()throws Exception{
            person p=new person();
            Class clazz=Class.forName("Demo1.person");
            Method method=clazz.getMethod("aal",String.class,int.class);
            method.invoke(p,"liang",22);
        }
        public void Test3()throws Exception{
            person p=new person();
            Class clazz=Class.forName("Demo1.person");
            Method method=clazz.getMethod("aal",String.class,int[].class);
            Class cs[]=(Class[]) method.invoke(p,"liang",new int[]{1,2,3,4});
            System.out.print(cs[0]);
        }
    }
    package Demo1;
    
    import static org.junit.Assert.*;
    
    import java.lang.reflect.Constructor;
    import java.lang.reflect.InvocationTargetException;
    import java.util.ArrayList;
    
    import org.junit.Test;
    
    import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List;
    
    public class Demo2Test {
    
        @Test
        public void test() throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
            Class clazz=Class.forName("Demo1.person");
            Constructor c=clazz.getConstructor(null);
            person p=(person)c.newInstance(null);
             System.out.print(p.name);
        }
        @Test
        public void Test1()throws Exception{
            Class clazz=Class.forName("Demo1.person");
            Constructor c=clazz.getConstructor(String.class);
            person p=(person) c.newInstance("xxxxx");
        }
        @Test
        public void Test()throws Exception{
            Class clazz=Class.forName("Demo1.person");
            Constructor c=clazz.getConstructor(String.class,int.class);
            person p=(person) c.newInstance("int",11);
        }
        @Test
        public void Test4()throws Exception{
            Class clazz=Class.forName("Demo1.person");
            Constructor c=clazz.getDeclaredConstructor(String.class);
            c.setAccessible(true);
            person p=(person)c.newInstance("abc");
        
        }
        @Test
        public void Test5()throws Exception{
            Class clazz=Class.forName("Demo1.person");
            person p=(person)clazz.newInstance();
        
        }
    }
  • 相关阅读:
    使用NUnit做单元测试(总结版)
    http、ajax调试利器:Fiddler!!!(资料汇总)
    驳《从团购网站看中国人的创新精神》
    破解迷团:在asp.net  2.0服务器上运行.net 3.5(一)
    扩充NetCMS的功能:添加{TM:Repeater}{/TM:Repeater}标签
    TFS 2010 基础配置手动升级到高级配置 安装实践
    .net 中的 StringBuilder 和 TextWriter 区别
    最大团问题
    全排列问题
    ado.net连接池
  • 原文地址:https://www.cnblogs.com/kedoudejingshen/p/2731351.html
Copyright © 2011-2022 走看看