首页 > 其他分享 >获取成员方法,并传值调用

获取成员方法,并传值调用

时间:2024-08-23 21:50:08浏览次数:3  
标签:fun4 调用 String System 获取 println public 传值 out

package com.shujia.day21;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Arrays;

/*
    通过反射获取成员方法,并传值调用

    获取所有方法
		getMethods          获取自己以及父类中所有的公共的成员方法
		getDeclaredMethods  自己的所有成员方法,包括私有,不包括父亲的。
    获取单个方法
		getMethod
		getDeclaredMethod
	使用获取的方法
	    Method.invoke(Object object) 需要指定具体类的对象
    暴力访问
		method.setAccessible(true); 使用哪个方法,哪个方法进行暴力访问
 */
public class MethodDemo1 {
    public static void main(String[] args) throws Exception {
        //先通过反射将对象创建出来
        //获取类的字节码文件对象
        Class<?> studentClass = Class.forName("com.shujia.day21.Student");
        //通过类的字节码文件对象获取类的构造方法
        Constructor<?> c1 = studentClass.getConstructor();
        //通过获取的构造方法创建类的对象
        //创建这个对象的目的是访问成员的,被访问的成员方法是一个独立的个体,使用时需要指定哪一个类
        Object o = c1.newInstance();


        Method fun1 = studentClass.getMethod("fun1");
        System.out.println(fun1);
//        Method fun4 = studentClass.getMethod("fun4");
//        System.out.println(fun4);
        Method fun4 = studentClass.getDeclaredMethod("fun4");
        System.out.println(fun4);

        System.out.println("------------------------------");
        Method[] methods = studentClass.getMethods(); //获取自己以及父类中所有的公共的成员方法
        System.out.println(Arrays.toString(methods));
        System.out.println("------------------------------");
        Method[] m2 = studentClass.getDeclaredMethods(); //自己的所有成员方法,包括私有,不包括父亲的。
        System.out.println(Arrays.toString(m2));
        System.out.println("------------------------------");
        //使用获取的方法
        fun1.invoke(o);
        System.out.println("------------------------------");
        fun4.setAccessible(true);
        fun4.invoke(o);//需要指定具体的类
        System.out.println("------------------------------");
        //获取带参数的公共方法,并使用该方法
        Method fun11 = studentClass.getMethod("fun1", String.class);
        Object o2 = fun11.invoke(o, "魏一民"); // 数加:魏一民
        System.out.println(o2);


    }
}

package com.shujia.day21;

public class Student {
    private String name;
    int age;
    protected String address;
    public int phoneNum;

    public Student() {

    }

    public Student(String s) {
        System.out.println("带参数的公共构造方法" + s);
    }

    protected Student(int i) {
        System.out.println("带参数的受保护构造方法" + i);
    }

    Student(double d) {
        System.out.println("带参数的默认修饰符构造方法" + d);
    }

    private Student(String name, int age) {
        System.out.println("带参数的私有构造方法" + name + "," + age);
    }

    public void fun1() {
        System.out.println("这是公共的成员方法");
    }

    public String fun1(String s) {
        System.out.println("这是公共的成员方法" + s);
        return "数加:" + s;
    }

    protected void fun2(){
        System.out.println("这是受保护的成员方法");
    }

    void fun3(){
        System.out.println("这是默认的成员方法");
    }

    private void fun4(){
        System.out.println("这是私有的成员方法");
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                ", phoneNum=" + phoneNum +
                '}';
    }
}

标签:fun4,调用,String,System,获取,println,public,传值,out
From: https://www.cnblogs.com/qiwei-bigdata/p/18377141

相关文章

  • 通过类的字节码文件对象获取构造方法并创建对象
    packagecom.shujia.day21;importjava.lang.reflect.Constructor;importjava.util.Arrays;/*类中的三大成员:成员变量:Field构造方法:Constructor成员方法:Method获取构造方法,通过类的字节码文件对象进行获取publicConstructor<T>......
  • 获取成员变量并赋值使用
    packagecom.shujia.day21;importjava.lang.reflect.Constructor;importjava.lang.reflect.Field;/*反射获取成员变量并赋值使用获取所有成员通过类的字节码文件对象获取 getFields只能获取公共的成员变量 getDeclaredFields获取私有的......
  • 获取一个字节码文件对应的Class对象
    packagecom.shujia.day21;/*如何获取一个字节码文件(编译后得到的.class后缀的文件)对应的Class对象一个字节码文件,在内存中只会存在一个对应的Class类对象*/publicclassClassDemo1{publicstaticvoidmain(String[]args)throwsException{//......
  • C++ 构造函数/析构函数中调用虚函数的情况简单测试
    #include<string>#include<iostream>usingnamespacestd;namespace{classAnimal{public:Animal(){cout<<"基类调用虚函数…"<<endl;cout<<GetInfo()<<e......
  • 【OpenHarmony】openharmony移植到RK3568------获取源码编译OpenHarmony源码
    一、源码获取源码获取有好几种方式,在这里直接在镜像网站下载源码,点击下面连接下载全量版本的OpenHarmony4.1https://repo.huaweicloud.com/openharmony/os/4.1-Release/code-v4.1-Release.tar.gz将源码放到自己建立的目录下解压,我放入的是这个目录/home/wzz/work/0H4.1......
  • 织梦DedeCMS幻灯片调用图片为什么显示模糊
    很多使用织梦程序做网站的时候遇到一个问题就是dedecms网站首页幻灯片调用的是文章缩略图,如果我们实际图片宽高比例和幻灯片的比例相差太大的话,那么在首页显示的幻灯片图片就会自动拉伸变的模糊,这个看起来确实是一个比较影响用户体验的问题,下面就给大家分析一下解决这个问题的两个......
  • 使用 MySQL Shell 获取 MySQL 诊断信息(译)
    收集全面的诊断信息可能会让人望而却步。知道要运行哪些查询以获取所需数据更像是一种艺术形式,而非其他什么。幸运的是,对于那些不太擅长艺术的人来说,MySQLShell使得获取这些信息变得更加容易。让我们来看一下。设置在我们开始之前,我们需要连接到一个MySQL实例。在本演示中,我......
  • 织梦cms调用缩略图失真怎么办
    织梦CMS调用缩略图失真的问题可以通过以下几种方式进行解决:检查原始图片质量:确保上传到系统的原始图片具有足够的分辨率和清晰度。失真的缩略图可能是由于原始图片质量不佳造成的。优化织梦CMS的缩略图生成设置:在织梦后台,找到关于生成缩略图的设置选项,这些选项通常位......
  • 阿里dataworks通过pyodps 3获取表元数据及质量稽核
    用途:本脚本的主要作用就是获取所属工作空间中表字段信息核心脚本:本逻辑主要需要五个核心脚本:00_task_meta_setup_time#用于创建表及设置odps的启动时间01_task_meta_fields_move#搬迁数据02_task_meta_tables#表元数据获取及数据量统计03_task_meta_fields_parallel......
  • Java 调用电脑中安装的tesseract.exe进行图片中的文本方向识别
    StringimagePath="测试图片完整地址";StringtesseractPath="Tesseract安装路径\\tesseract.exe";ProcessBuilderprocessBuilder=newProcessBuilder(tesseractPath,imagePath,"stdout","--......