首页 > 其他分享 >反射

反射

时间:2023-12-27 20:12:04浏览次数:24  
标签:反射 String invoke method m2 clazz class

公共函数的调用 Class<A> clazz = A.class;

通过反射创建对象 获取函数对象 try { Method method = clazz.getMethod("m1");// 形参类型 Object o = clazz.newInstance();// JDK9 中过时了

调用空参函数 Object invoke = method.invoke(o);// 实参 System.out.println("invoke = " + invoke);

 

调用 int 型 函数 method = clazz.getMethod("m1", int.class);

 

JDK9开始 Constructor<A> constructor = clazz.getConstructor(); A a = constructor.newInstance();

invoke = method.invoke(a, 3306);

System.out.println("invoke = " + invoke);

 

String + int method = clazz.getMethod("m1", String.class, int.class);

constructor = clazz.getConstructor(); a = constructor.newInstance();

invoke = method.invoke(a, "勤能补拙", 3306);

System.out.println("invoke = " + invoke);

 

int + String 有返回值 method = clazz.getMethod("m1", int.class, String.class);

constructor = clazz.getConstructor(); a = constructor.newInstance();

 

nvoke 函数是来调用函数的,它的返回值就是函数的返回值,如果函数没有返回值或者被调用函数返回null,invoke函数也返回null invoke = method.invoke(a, 3306, "业精于勤");

 

A 中私有函数的调用 Class<?> aClass = A.class;

try { // getMethod 函数只能获取 public 修饰的函数 // Method m2 = aClass.getMethod("m2");// NoSuchMethodException: com.msr.lesson03.A.m2() Method m2 = aClass.getDeclaredMethod("m2");

// 赋予访问权限 m2.setAccessible(true);

Object invoke = m2.invoke(aClass.getConstructor().newInstance()); System.out.println("invoke = " + invoke); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) {// 没有访问权限的意思 e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); }

 

静态创建对象就是 使用 new 关键字创建 动态创建学生对象

 

静态创建对象就是 使用 new 关键字创建 : 要求类必须存在. 动态创建对象

Word word = new Word();

word.start();

Excel excel = new Excel() ;

excel.start();

 

 

// 创建文件的内存对象 Properties properties = new Properties();

// 借助资源流加载文件 ClassLoader classLoader = Test02.class.getClassLoader();// 获取类加载器 InputStream inputStream = classLoader.getResourceAsStream("wps.properties");// 默认路径 是 项目的 src 目录下 // 将硬盘文件和内存对象关联起来 try { properties.load(inputStream); // 读取硬盘文件内容 String value = properties.getProperty("className"); String[] split = value.split(";");

for (String className : split) { Class<?> clazz = Class.forName(className); WPS wps = (WPS) clazz.getConstructor().newInstance(); wps.start(); }

泛型只在编译时期有效

标签:反射,String,invoke,method,m2,clazz,class
From: https://www.cnblogs.com/yuec5067/p/17931336.html

相关文章

  • Java反射
    一、反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解......
  • 深入探讨Java反射:解析机制与应用场景
    当谈及Java编程语言的强大功能时,反射(Reflection)是一个不可忽视的特性。反射允许程序在运行时检查和操作其自身的结构,这为开发者提供了一种动态获取信息和执行操作的途径。在本篇博客中,我们将深入探讨Java反射的原理、用法以及一些实际场景中的应用。什么是反射?反射是Java的一种......
  • Java,反射创建对象的两种方式
    跟着孙哥学Spring,b站:https://www.bilibili.com/video/BV185411477k/?spm_id_from=333.337.search-card.all.click在Java中,我们可以使用反射来创建对象。这里有两种主要的方式:1.使用Class.forName().newInstance()方法这种方式是使用默认的无参数构造函数来创建对象。如果......
  • .NET中反射和动态表达式的分析和比较
    背景在.NET中,反射和动态表达式是两种常用的动态编程技术。它们都可以用来在运行时动态地创建和操作对象、调用方法、访问属性和字段等。但是,它们在性能方面有一些差异。反射:反射是.NET中的一种基础技术,可以用来获取程序集、类型、方法、属性、字段等的元数据,以及动态地创建对......
  • 如何让 Go 反射变快
    如何让Go反射变快小白debug 2023-12-2507:43 发表于上海 1人听过 以下文章来源于Golang技术分享 ,作者机器铃砍菜刀Golang技术分享.专注于Go语言知识分享最近读到一篇关于Go反射的文章,作者通过反射给结构体填充字段值的案例,充分利用Go的各种内在机理,逐......
  • 反射
    一、反射概述反射之中包含了一个「反」字,所以想要解释反射就必须先从「正」开始解释。一般情况下,我们使用某个类时必定知道它是什么类,是用来做什么的。于是我们直接对这个类进行实例化,之后使用这个类对象进行操作。Appleapple=newApple();//直接初始化,「正射」apple.setP......
  • java反射
    一、反射概述  二、反射的相关操作1、获取Class类对象示例:学生类:packagecom.itbianma;publicclassStudent{privateStringname;privateStringaddress;privateIntegerage;publicStudent(){}publicStudent(Stringname,......
  • Java零基础-反射
    前言Java是目前最流行的开发语言之一,在软件开发领域广泛应用。反射是Java的一项重要特性,它使得程序在运行时可以动态地获取和操作类、方法、属性等信息,极大地提高了Java的灵活性和可扩展性。本文将介绍Java反射的基本概念、使用方法、应用场景和优缺点,旨在为Java初学者提供一份简......
  • 反射
    允许程序在运行时类进行自我检查并切对内部的成员进行操作1、概念主要指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关语义2、作用在运行时判断任意一个对象所属的类在运行时获取类的对象在运行时......
  • 反射
    允许程序在运行时类进行自我检查并切对内部的成员进行操作1、概念主要指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关语义2、作用在运行时判断任意一个对象所属的类在运行时获取类的对象在运行时......