C# 和JAVA中反射的例子

该示例展示了Java中如何利用反射动态加载类,并实现接口调用。程序首先通过`Assembly.Load`加载指定DLL,然后通过`Activator.CreateInstance`创建对象,并使用`as`或`dynamic`关键字实现接口调用。此外,还演示了通过配置文件动态创建接口实现的简单工厂模式。
//using DB.Interface;
//using DB.MySql;
//using DB.SqlServer;
using DB.Interface;
using System;
using System.Reflection;

namespace Reflection1
{
    class Program
    {
        static void Main(string[] args)
        {
            #region MyRegion

            
            Console.WriteLine("---------------------------------");
            //IDBHelper mysqlDBHelper = new MySqlHelper();
            //mysqlDBHelper.Query();

            //动态加载
            Assembly assembly = Assembly.Load("DB.MySql");
            foreach (var module in assembly.GetModules())
            {
                Console.WriteLine(module.FullyQualifiedName);
                foreach (var type in module.GetTypes())
                {
                    Console.WriteLine(type.FullName);

                    foreach (var ctor in type.GetConstructors())
                    {
                        Console.WriteLine(ctor.Name);
                    }

                    foreach (var method in type.GetMethods())
                    {
                        Console.WriteLine(method.Name);
                    }
                }
            }

            Console.WriteLine("---------------------------------");

            /*             IL    metaData:元数据:清单
             *              ∧   ∧
             *               |    |
             C# -> 编译器 ->DLL/EXE->CLR/JIT->机器码
             */

            //使用反射
            Assembly assembly1 = Assembly.Load("DB.MySql");
            Type type1 = assembly1.GetType("DB.MySql.MySqlHelper"); //必须是完整类型名称
            object oDBHelper = Activator.CreateInstance(type1);
            // oDBHelper.Query(); //报错 oDBHelper就是MySqlHelper的实例, 但是编译时是个object
            dynamic dbHelper = oDBHelper; //dynamic避开编译器检查. 编译器只认可编译时类型, 编译时是个object
            dbHelper.Query(); //编译通过
            IDBHelper idBHelper = oDBHelper as IDBHelper;
            idBHelper.Query(); //编译通过
            #endregion

            Console.WriteLine("-----------Factory----------------------");
            IDBHelper idBHelper2 = SimpleFactory.CreatDBHelper();
            idBHelper2.Query();

        }
    }
}

using DB.Interface;
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
using System.Configuration;

namespace Reflection1
{
    public class SimpleFactory
    {
        private static string IDBHelperConfig = ConfigurationManager.AppSettings["IDBHelperConfig"];
        public static IDBHelper CreatDBHelper()
        {
            //<add key="IDBHelperConfig" value="DB.MySql,DB.MySql.MySqlHelper"/>
            Assembly assembly1 = Assembly.Load(IDBHelperConfig.Split(',')[0]); // 命名空间
            Type type1 = assembly1.GetType(IDBHelperConfig.Split(',')[1]); //必须是完整类型名称, DB.MySql.MySqlHelper
            object oDBHelper = Activator.CreateInstance(type1);
            // oDBHelper.Query(); //报错 oDBHelper就是MySqlHelper的实例, 但是编译时是个object
            //dynamic dbHelper = oDBHelper; //dynamic避开编译器检查. 编译器只认可编译时类型, 编译时是个object
            //dbHelper.Query(); //编译通过
            IDBHelper idBHelper = oDBHelper as IDBHelper;
            idBHelper.Query(); //编译通过
            return idBHelper;
        }
    }
}

using System;
using System.Collections.Generic;
using System.Text;

namespace DB.Interface
{
    public interface IDBHelper
    {
        void Query();
    }
}

using DB.Interface;
using System;
using System.Collections.Generic;
using System.Text;

namespace DB.MySql
{
    public class MySqlHelper : IDBHelper
    {
        public MySqlHelper()
        {
            Console.WriteLine("{0}被构造", this.GetType().Name);
        }
        public void Query()
        {
            Console.WriteLine("{0}.Query", this.GetType().Name);
        }
    }
}

using DB.Interface;
using System;
using System.Collections.Generic;
using System.Text;

namespace DB.SqlServer
{
    public class SqServerlHelper : IDBHelper
    {
        public SqServerlHelper()
        {
            Console.WriteLine("{0}被构造", this.GetType().Name);
        }
        public void Query()
        {
            Console.WriteLine("{0}.Query", this.GetType().Name);
        }
    }
}

package com.zg.reflaction;

/**
 * @Auther: zhaoss
 * @Date: 2022/8/7 - 08 - 07 - 18:51
 * @Description: com.zg.reflaction
 * @version: 1.0
 */
public class Person {
    private Integer id = 1;
    private String name = "zg";
    private String gender="男";

    public Person() {
        System.out.println("Public 无参构造函数");
    }

    public Person(Integer id, String name, String gender) {
        this.id = id;
        this.name = name;
        this.gender = gender;
        System.out.println("Public 带参构造函数");
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public void GotoSchool()
    {
        System.out.println("去上学了!!!!");
    }
}

package com.zg.reflaction;

import javax.naming.Context;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * @Auther: zhaoss
 * @Date: 2022/8/7 - 08 - 07 - 18:55
 * @Description: com.zg.reflaction
 * @version: 1.0
 */
public class ReflactionTest {
    public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException {
        //Person person = new Person();
//        Class<? extends Person> aClass = person.getClass();
//        System.out.println(aClass);

        /*
        我们创建了一个类,通过 编译(javac.exe),生成对应的.class文件,
        之后使用java.exe(JVM的类加载器来完成)加载此.class文件,此.class文件加载到内存以后,
        就是一个运行时类,存放在缓存区,这个运行时类就是一个Class的实例。

        java.lang.class是反射的源头。

        它有如下几个特点:


        1.每一个运行时类只加载一次

        2.有了Class的实例之后,我们才可以进行如下的操作:

        2.1)创建对应的运行时类的对象

        2.2)获取对应的运行时类的完整结构(属性、方法、构造器、内部类、父类、所在包、注解、异常…)

        2.3)调用对应的运行时类的指定的结构(属性、方法、构造器)

        2.4)反射的应用:动态代理。


        在正常方式下:我们需要引入需要的“包类”名称——通过new实例化——取得实例化的对象

        反射方式:实例化对象——getClass()方法——得到完整的“包类”名称。

        这相当于是一个倒序的过程。

        如何获取Class实例呢?

        Class只有在实例后才能开始进行反射。下面是实例化的四种方式:

        1.调用运行时类本身的.class属性

   getName();    //获取全名  例如:com.bean.Book

   getSimpleName()  //获取类名 例如:Book
         */
        Class<Person> clazz1 = Person.class;
        System.out.println("clazz1:"+clazz1.getName());

        Class<String> clazz2 = String.class; //需要无参构造
        System.out.println("clazz2:"+clazz2.getName());

        //2.通过运行时类的对象获取

        Person person = new Person();
        Class<? extends Person> clazz3 = person.getClass();
        System.out.println("clazz3:"+clazz3.getName());

        //3,通过Class的静态方法获取(反射的动态性)
        String s = "com.zg.reflaction.Person";
        Class<?> clazz4 = Class.forName(s);
        //clazz4.newInstance();
        System.out.println("clazz4:"+clazz4.getName());

        //4.通过类的加载器
//        ClassLoader classLoader = this.getClass().getClassLoader();
//        Class<?> clazz5 = classLoader.loadClass(s);
//        System.out.println(clazz5.getName());

//        //通过反射获取无参无返回值成员方法[包含私有]并使用
//        Constructor<Person> constructor = clazz1.getDeclaredConstructor(Context.class);
//        //访问私有构造必须
//        constructor.setAccessible(true);

        //获取所有的构造函数
        Constructor<?>[] constructors = clazz1.getDeclaredConstructors();
        System.out.println(constructors);

        for (Constructor c : constructors
             ) {
            System.out.println("构造参数分别是:"+c);
            System.out.println("修饰符分别是:"+ c.getModifiers());
        }

        /*
        修饰符
   0--默认不写 1--public 2--private 4--protected
   8--static 16--final 32--synchronized
   64--volatile 128--transient 256--native
   512--interface 1024--abstract
        */

        //获取单个构造函数
//        try {
//            Constructor constructor = clazz1.getConstructor(String.class);
//            System.out.println(constructor);
//        } catch (NoSuchMethodException e){
//            e.printStackTrace();
//        }

        //获取包
        Package aPackage = clazz1.getPackage();
        System.out.println("包是:"+aPackage);


        //获取接口:getInterfaces()

        //获取父类:getSuperclass()

        //获取方法,注意:它会将系统自带的方法也得到
        Method[] methods = clazz2.getMethods();

        for (Method m : methods
             ) {
            System.out.println("方法分别是:"+m);
        }

        //getDeclaredMethods()   //获取所有的方法,注意:它不会获取系统自带的方法

        Method[] methods1 = clazz2.getDeclaredMethods();

        for (Method m : methods1
        ) {
            System.out.println("去除系统方法分别是:"+m);
        }

        //获取单个方法:
        Method gotoSchool = clazz3.getMethod("GotoSchool");
        gotoSchool.invoke(clazz3.newInstance(),null);

        /*
          获取字段
   公开(Public)

   getFields()   //获取所有的公开字段

   getField(String name)  //参数可以指定字段  获取单个public字段

   所有

   getDeclaredFields()  //获取所有的字段

   getDeclaredField(String name)  //获取单个字段  参数可以指定字段
        */

        //实例化对象

        //第一种方式
        Person person1 = clazz1.newInstance();

        //第二种方式:
        Constructor constructor = clazz1.getDeclaredConstructor();   //获得无参构造
        Object obj = constructor.newInstance();    //实例化book对象

        //设置访问属性
        // clz.setAccessible(true)  //可访问
        // clz.setAccessible(false)  //不可访问

        Field gender = clazz1.getDeclaredField("gender");
        gender.setAccessible(true);
        System.out.println(gender);

        /*
          使用方法
   method.invoke(Object obj,Object... args)

   obj:如果是实例方法,则放个该方法的类对象给它

   obj:静态方法,写null

   args:方法的参数值,没有写null,或不写都行
        */
        Method gotoSchool2 = clazz3.getMethod("GotoSchool");
        gotoSchool2.invoke(clazz3.newInstance(),null);

    }
}

结果:

"C:\Program Files\Java\jdk1.8.0_101\bin\java.exe" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.3\lib\idea_rt.jar=31859:D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_101\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\rt.jar;E:\javaCode\springhelloworld\nettytest\target\classes" com.zg.reflaction.ReflactionTest
clazz1:com.zg.reflaction.Person
clazz2:java.lang.String
Public 无参构造函数
clazz3:com.zg.reflaction.Person
clazz4:com.zg.reflaction.Person
[Ljava.lang.reflect.Constructor;@4554617c
构造参数分别是:public com.zg.reflaction.Person()
修饰符分别是:1
构造参数分别是:public com.zg.reflaction.Person(java.lang.Integer,java.lang.String,java.lang.String)
修饰符分别是:1
包是:package com.zg.reflaction
方法分别是:public boolean java.lang.String.equals(java.lang.Object)
方法分别是:public java.lang.String java.lang.String.toString()
方法分别是:public int java.lang.String.hashCode()
方法分别是:public int java.lang.String.compareTo(java.lang.String)
方法分别是:public int java.lang.String.compareTo(java.lang.Object)
方法分别是:public int java.lang.String.indexOf(java.lang.String,int)
方法分别是:public int java.lang.String.indexOf(java.lang.String)
方法分别是:public int java.lang.String.indexOf(int,int)
方法分别是:public int java.lang.String.indexOf(int)
方法分别是:public static java.lang.String java.lang.String.valueOf(int)
方法分别是:public static java.lang.String java.lang.String.valueOf(long)
方法分别是:public static java.lang.String java.lang.String.valueOf(float)
方法分别是:public static java.lang.String java.lang.String.valueOf(boolean)
方法分别是:public static java.lang.String java.lang.String.valueOf(char[])
方法分别是:public static java.lang.String java.lang.String.valueOf(char[],int,int)
方法分别是:public static java.lang.String java.lang.String.valueOf(java.lang.Object)
方法分别是:public static java.lang.String java.lang.String.valueOf(char)
方法分别是:public static java.lang.String java.lang.String.valueOf(double)
方法分别是:public char java.lang.String.charAt(int)
方法分别是:public int java.lang.String.codePointAt(int)
方法分别是:public int java.lang.String.codePointBefore(int)
方法分别是:public int java.lang.String.codePointCount(int,int)
方法分别是:public int java.lang.String.compareToIgnoreCase(java.lang.String)
方法分别是:public java.lang.String java.lang.String.concat(java.lang.String)
方法分别是:public boolean java.lang.String.contains(java.lang.CharSequence)
方法分别是:public boolean java.lang.String.contentEquals(java.lang.CharSequence)
方法分别是:public boolean java.lang.String.contentEquals(java.lang.StringBuffer)
方法分别是:public static java.lang.String java.lang.String.copyValueOf(char[])
方法分别是:public static java.lang.String java.lang.String.copyValueOf(char[],int,int)
方法分别是:public boolean java.lang.String.endsWith(java.lang.String)
方法分别是:public boolean java.lang.String.equalsIgnoreCase(java.lang.String)
方法分别是:public static java.lang.String java.lang.String.format(java.util.Locale,java.lang.String,java.lang.Object[])
方法分别是:public static java.lang.String java.lang.String.format(java.lang.String,java.lang.Object[])
方法分别是:public void java.lang.String.getBytes(int,int,byte[],int)
方法分别是:public byte[] java.lang.String.getBytes(java.nio.charset.Charset)
方法分别是:public byte[] java.lang.String.getBytes(java.lang.String) throws java.io.UnsupportedEncodingException
方法分别是:public byte[] java.lang.String.getBytes()
方法分别是:public void java.lang.String.getChars(int,int,char[],int)
方法分别是:public native java.lang.String java.lang.String.intern()
方法分别是:public boolean java.lang.String.isEmpty()
方法分别是:public static java.lang.String java.lang.String.join(java.lang.CharSequence,java.lang.CharSequence[])
方法分别是:public static java.lang.String java.lang.String.join(java.lang.CharSequence,java.lang.Iterable)
方法分别是:public int java.lang.String.lastIndexOf(int)
方法分别是:public int java.lang.String.lastIndexOf(java.lang.String)
方法分别是:public int java.lang.String.lastIndexOf(java.lang.String,int)
方法分别是:public int java.lang.String.lastIndexOf(int,int)
方法分别是:public int java.lang.String.length()
方法分别是:public boolean java.lang.String.matches(java.lang.String)
方法分别是:public int java.lang.String.offsetByCodePoints(int,int)
方法分别是:public boolean java.lang.String.regionMatches(int,java.lang.String,int,int)
方法分别是:public boolean java.lang.String.regionMatches(boolean,int,java.lang.String,int,int)
方法分别是:public java.lang.String java.lang.String.replace(char,char)
方法分别是:public java.lang.String java.lang.String.replace(java.lang.CharSequence,java.lang.CharSequence)
方法分别是:public java.lang.String java.lang.String.replaceAll(java.lang.String,java.lang.String)
方法分别是:public java.lang.String java.lang.String.replaceFirst(java.lang.String,java.lang.String)
方法分别是:public java.lang.String[] java.lang.String.split(java.lang.String)
方法分别是:public java.lang.String[] java.lang.String.split(java.lang.String,int)
方法分别是:public boolean java.lang.String.startsWith(java.lang.String,int)
方法分别是:public boolean java.lang.String.startsWith(java.lang.String)
方法分别是:public java.lang.CharSequence java.lang.String.subSequence(int,int)
方法分别是:public java.lang.String java.lang.String.substring(int)
方法分别是:public java.lang.String java.lang.String.substring(int,int)
方法分别是:public char[] java.lang.String.toCharArray()
方法分别是:public java.lang.String java.lang.String.toLowerCase(java.util.Locale)
方法分别是:public java.lang.String java.lang.String.toLowerCase()
方法分别是:public java.lang.String java.lang.String.toUpperCase()
方法分别是:public java.lang.String java.lang.String.toUpperCase(java.util.Locale)
方法分别是:public java.lang.String java.lang.String.trim()
方法分别是:public final void java.lang.Object.wait() throws java.lang.InterruptedException
方法分别是:public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
方法分别是:public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
方法分别是:public final native java.lang.Class java.lang.Object.getClass()
方法分别是:public final native void java.lang.Object.notify()
方法分别是:public final native void java.lang.Object.notifyAll()
方法分别是:public default java.util.stream.IntStream java.lang.CharSequence.chars()
方法分别是:public default java.util.stream.IntStream java.lang.CharSequence.codePoints()
去除系统方法分别是:public boolean java.lang.String.equals(java.lang.Object)
去除系统方法分别是:public java.lang.String java.lang.String.toString()
去除系统方法分别是:public int java.lang.String.hashCode()
去除系统方法分别是:public int java.lang.String.compareTo(java.lang.String)
去除系统方法分别是:public int java.lang.String.compareTo(java.lang.Object)
去除系统方法分别是:public int java.lang.String.indexOf(java.lang.String,int)
去除系统方法分别是:public int java.lang.String.indexOf(java.lang.String)
去除系统方法分别是:public int java.lang.String.indexOf(int,int)
去除系统方法分别是:public int java.lang.String.indexOf(int)
去除系统方法分别是:static int java.lang.String.indexOf(char[],int,int,char[],int,int,int)
去除系统方法分别是:static int java.lang.String.indexOf(char[],int,int,java.lang.String,int)
去除系统方法分别是:public static java.lang.String java.lang.String.valueOf(int)
去除系统方法分别是:public static java.lang.String java.lang.String.valueOf(long)
去除系统方法分别是:public static java.lang.String java.lang.String.valueOf(float)
去除系统方法分别是:public static java.lang.String java.lang.String.valueOf(boolean)
去除系统方法分别是:public static java.lang.String java.lang.String.valueOf(char[])
去除系统方法分别是:public static java.lang.String java.lang.String.valueOf(char[],int,int)
去除系统方法分别是:public static java.lang.String java.lang.String.valueOf(java.lang.Object)
去除系统方法分别是:public static java.lang.String java.lang.String.valueOf(char)
去除系统方法分别是:public static java.lang.String java.lang.String.valueOf(double)
去除系统方法分别是:public char java.lang.String.charAt(int)
去除系统方法分别是:private static void java.lang.String.checkBounds(byte[],int,int)
去除系统方法分别是:public int java.lang.String.codePointAt(int)
去除系统方法分别是:public int java.lang.String.codePointBefore(int)
去除系统方法分别是:public int java.lang.String.codePointCount(int,int)
去除系统方法分别是:public int java.lang.String.compareToIgnoreCase(java.lang.String)
去除系统方法分别是:public java.lang.String java.lang.String.concat(java.lang.String)
去除系统方法分别是:public boolean java.lang.String.contains(java.lang.CharSequence)
去除系统方法分别是:public boolean java.lang.String.contentEquals(java.lang.CharSequence)
去除系统方法分别是:public boolean java.lang.String.contentEquals(java.lang.StringBuffer)
去除系统方法分别是:public static java.lang.String java.lang.String.copyValueOf(char[])
去除系统方法分别是:public static java.lang.String java.lang.String.copyValueOf(char[],int,int)
去除系统方法分别是:public boolean java.lang.String.endsWith(java.lang.String)
去除系统方法分别是:public boolean java.lang.String.equalsIgnoreCase(java.lang.String)
去除系统方法分别是:public static java.lang.String java.lang.String.format(java.util.Locale,java.lang.String,java.lang.Object[])
去除系统方法分别是:public static java.lang.String java.lang.String.format(java.lang.String,java.lang.Object[])
去除系统方法分别是:public void java.lang.String.getBytes(int,int,byte[],int)
去除系统方法分别是:public byte[] java.lang.String.getBytes(java.nio.charset.Charset)
去除系统方法分别是:public byte[] java.lang.String.getBytes(java.lang.String) throws java.io.UnsupportedEncodingException
去除系统方法分别是:public byte[] java.lang.String.getBytes()
去除系统方法分别是:public void java.lang.String.getChars(int,int,char[],int)
去除系统方法分别是:void java.lang.String.getChars(char[],int)
去除系统方法分别是:private int java.lang.String.indexOfSupplementary(int,int)
去除系统方法分别是:public native java.lang.String java.lang.String.intern()
去除系统方法分别是:public boolean java.lang.String.isEmpty()
去除系统方法分别是:public static java.lang.String java.lang.String.join(java.lang.CharSequence,java.lang.CharSequence[])
去除系统方法分别是:public static java.lang.String java.lang.String.join(java.lang.CharSequence,java.lang.Iterable)
去除系统方法分别是:public int java.lang.String.lastIndexOf(int)
去除系统方法分别是:public int java.lang.String.lastIndexOf(java.lang.String)
去除系统方法分别是:static int java.lang.String.lastIndexOf(char[],int,int,java.lang.String,int)
去除系统方法分别是:public int java.lang.String.lastIndexOf(java.lang.String,int)
去除系统方法分别是:public int java.lang.String.lastIndexOf(int,int)
去除系统方法分别是:static int java.lang.String.lastIndexOf(char[],int,int,char[],int,int,int)
去除系统方法分别是:private int java.lang.String.lastIndexOfSupplementary(int,int)
去除系统方法分别是:public int java.lang.String.length()
去除系统方法分别是:public boolean java.lang.String.matches(java.lang.String)
去除系统方法分别是:private boolean java.lang.String.nonSyncContentEquals(java.lang.AbstractStringBuilder)
去除系统方法分别是:public int java.lang.String.offsetByCodePoints(int,int)
去除系统方法分别是:public boolean java.lang.String.regionMatches(int,java.lang.String,int,int)
去除系统方法分别是:public boolean java.lang.String.regionMatches(boolean,int,java.lang.String,int,int)
去除系统方法分别是:public java.lang.String java.lang.String.replace(char,char)
去除系统方法分别是:public java.lang.String java.lang.String.replace(java.lang.CharSequence,java.lang.CharSequence)
去除系统方法分别是:public java.lang.String java.lang.String.replaceAll(java.lang.String,java.lang.String)
去除系统方法分别是:public java.lang.String java.lang.String.replaceFirst(java.lang.String,java.lang.String)
去除系统方法分别是:public java.lang.String[] java.lang.String.split(java.lang.String)
去除系统方法分别是:public java.lang.String[] java.lang.String.split(java.lang.String,int)
去除系统方法分别是:public boolean java.lang.String.startsWith(java.lang.String,int)
去除系统方法分别是:public boolean java.lang.String.startsWith(java.lang.String)
去除系统方法分别是:public java.lang.CharSequence java.lang.String.subSequence(int,int)
去除系统方法分别是:public java.lang.String java.lang.String.substring(int)
去除系统方法分别是:public java.lang.String java.lang.String.substring(int,int)
去除系统方法分别是:public char[] java.lang.String.toCharArray()
去除系统方法分别是:public java.lang.String java.lang.String.toLowerCase(java.util.Locale)
去除系统方法分别是:public java.lang.String java.lang.String.toLowerCase()
去除系统方法分别是:public java.lang.String java.lang.String.toUpperCase()
去除系统方法分别是:public java.lang.String java.lang.String.toUpperCase(java.util.Locale)
去除系统方法分别是:public java.lang.String java.lang.String.trim()
Public 无参构造函数
去上学了!!!!
Public 无参构造函数
Public 无参构造函数
private java.lang.String com.zg.reflaction.Person.gender
Public 无参构造函数
去上学了!!!!

Process finished with exit code 0
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘诺西亚的火山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值