JAVA-反射学习(3)

Ubuntu24.04下Librenms的完整安装与配置指南 本文提供了在Ubuntu 24.04 LTS系统上完整安装与配置LibreNMS网络监控系统的详细指南。内容涵盖系统环境准备、依赖安装、源码获取、PHP/数据库/Nginx配置、Composer安装、网页向导设置以及设备添加与日常使用,帮助用户快速部署一套功能强大的开源网络监控解决方案。 阅读详情

import java.lang.reflect.*;

class Stu{
    private String name;
    private int age;
    public boolean flag =true;
    public Stu(){}
    public Stu(String name,int age){
        this.setName(name);
        this.setAge(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 study(){
        System.out.println("i can study");
    }
    private void speak(String languge,int x){
        System.out.println("I can speak :"+languge+" "+x);
    }
    public String toString(){
        return this.name+" : "+this.age;
    }

}

public class ReflectThree {

    public static void classForInstance() throws Exception{
        //第一步:我们通过上面的三种方式可以得到类的信息;
        @SuppressWarnings("unchecked")
        Class<Stu> stuClass =       (Class<Stu>)Class.forName("GeneIterAdaptReflect.com.Stu");

        //第二步:如果该类Stu有无参的构造器,那么就可以用类信息调用newInstance();来创建一个实例
        //好处:降低了于类(子类)之间的耦合,比如Stu是一个接口或者超类,我们就可以利用多态直接与接口打交道,来调用子类的方法
        Stu stu1 = stuClass.newInstance();
        stu1.setName("丽丽");
        System.out.println(stu1.getName());

        //第三步:通过有参数的构造器实例对象;
        @SuppressWarnings("unchecked")
        Constructor<Stu>[] constructor = (Constructor<Stu>[]) 
        stuClass.getConstructors();
        Stu stu2 = constructor[1].newInstance("qian",36);
        System.out.println(stu2.toString());
    }
    public static void methodInfo() throws Exception{
        @SuppressWarnings("unchecked")
        Class<Stu> stuClass = (Class<Stu>) 
        Class.forName("GeneIterAdaptReflect.com.Stu");
        //第四步:获取类的全部方法 public void study();
        Method[] methods  = stuClass.getDeclaredMethods();  
        for(Method m:methods){
            StringBuilder s = new StringBuilder();

            //返回修饰符:
            int x = m.getModifiers();
            String modifyString = Modifier.toString(x);

            //返回值类型;
            Class<?> returnType = m.getReturnType();
            //Type returnType = m.getGenericReturnType();

            //参数个数及类型:
            Class<?>[] paraClass = m.getParameterTypes();
            if(paraClass.length==0){
                s.append("");
            }
            else{
                for(int i=0;i<paraClass.length;i++){
                    s.append(paraClass[i].getSimpleName()+" ");
                }
            }       
            System.out.println(modifyString+" 
            "+returnType.getSimpleName()+" "+m.getName()
            +"("+s+")");
        }   
    }

    public static void fieldInfo() throws Exception{
        Class<Stu> stuClass = (Class<Stu>) 
        Class.forName("GeneIterAdaptReflect.com.Stu");
        Field[] fields = stuClass.getDeclaredFields();
        for(int i=0;i<fields.length;i++){
            System.out.println(Modifier.toString(fields[i].
            getModifiers())+" "+fields[i].getName());
        }
    }

    public static void callSpeakMethod()throws Exception{
        //第一步拿到对象
        Class<Stu> stuClass = (Class<Stu>)  Class.forName
        ("GeneIterAdaptReflect.com.Stu");
        Constructor<Stu>[] constructor=
        (Constructor<Stu>[]) stuClass.getConstructors();
        Stu stu3 = constructor[1].newInstance("qian",26);
        //第二步拿到方法
        Class<?>[] paraClass =new Class[]
        {String.class,int.class};
        Method privateMethod = 
        stuClass.getDeclaredMethod("speak",paraClass);

        //设置私有方法的可访问权
        privateMethod.setAccessible(true);
        //调用方法
        privateMethod.invoke(stu3, "English  French",2);

    }
    /**
     * @param obj: 对象
     * @param fieldName :属性名称(字段名)
     * @param paraType  : 参数类型
     * @param value  :想赋予的值
     * @throws Exception 
     */
    public static void setter(Object obj,String fieldName,Class<?> paraType,Object value) throws Exception{
        //set的方法的标准写法:setName,而传进来的fieldName是字段
        名 比如 name;要转换成标准形式;
        String firstChar =
        fieldName.substring(0, 1).toUpperCase();
        String methodName = firstChar+fieldName.substring(1);

        obj.getClass().getDeclaredMethod
        ("set"+methodName, paraType).invoke(obj, value);
    }
    /**
     * @param obj :对象名
     * @param fieldName  :要get的字段名
     * @return Object :返回任意类型值
     * @throws Exception
     */
    public static Object getter(Object obj,String fieldName) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException{
        String firstChar =
        fieldName.substring(0, 1).toUpperCase();
        String methodName = firstChar+fieldName.substring(1);
        //return obj.getClass().getDeclaredMethod("get"+methodName,null).invoke(obj,null);
        return obj.getClass().getDeclaredMethod("get"+methodName).invoke(obj);
    }
    public static void main(String[] args) throws Exception {

        Class<Stu> stuClass = (Class<Stu>) Class.forName("GeneIterAdaptReflect.com.Stu");
        Stu stuObj = stuClass.newInstance();
        setter(stuObj,"name",String.class,"zhangsan");
        String getString =(String)getter(stuObj,"name");
        System.out.println(getString);

    }

}
36、转子 - 主动磁轴承系统建模及密封性能研究 本文研究了转子-主动磁轴承(AMBs)系统的动力学建模、稳定性分析及密封性能。通过建立包含转子、电子控制系统和接口接触的机电模型,结合Bernoulli-Euler梁理论与弹簧单元等效法,构建了考虑接口接触的闭环系统模型,并在磁悬浮鼓风机和电机上进行数值模拟与实验验证,结果表明接口接触刚度显著影响系统稳定性,尤其在高预紧扭矩下易激发弯曲模态失稳。同时,对非接触式低温密封进行了CFD仿真与实验测试,发现浮动环密封(FRS)具有最优的泄漏控制和抗磨损性能。研究成果为提升高速旋转机械的稳定性和密封可靠性提供了理论 阅读详情

相关推荐

llama.cpp部署大模型

llama.cpp如何部署大模型

Eddy的博客 973

系统学习】Java基础3之反射

Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。

qq_43058348的博客 387

2023 年全国网络安全行业职业技能大赛-电子数据取证分析师-决赛WP_2023网络安全行业赛取证

数据库取证工具里面可以恢复删除掉的数据带红叉的就说删除过的,game库下面announcement_detail表里面update_time字段使用sql语句时间戳最大为1513243355转换时间为2017-12-14 17:22:35。

2401_89791684的博客 2091

java学习之线程3与反射

线程Daemon(),守护线程,该方法必须在启动线程前调用,主线程结束时,子线程也结束.join() 插队,哪个线程调用这个方法 就会拿到CPU的执行权,先完成执行.分析:在多线程程序中 这个单例安全吗? 为什么?如何解决?加锁来保证同一时间只有一个线程来创建对象这样效率高不高?如何提高效率public class Test { public static void main(String[] ...

111的博客 271

Ubuntu 20.04 上 Geant4 安装避坑全记录:从源码编译到 B1 示例跑通(含数据包加速下载)

本文详细记录了在Ubuntu 20.04系统上从源码编译安装Geant4的全过程,包括环境准备、依赖安装、CMake参数解析、多线程编译优化以及数据包加速下载等关键步骤。特别针对B1示例的测试与验证提供了完整流程,帮助科研人员和学生避开常见安装陷阱,提升粒子物理模拟效率。

weixin_31220401的博客 312

利用李雅普诺夫函数开发航天器姿态控制系统

本文基于李雅普诺夫函数控制方法,采用修正罗德里格斯参数(MRP)描述航天器姿态,设计了姿态控制律。通过构造能量型李雅普诺夫函数,推导出保证系统稳定的控制闭环方程,实现了航天器从初始状态到目标状态的稳定转换。针对MRP参数可能出现的奇异性问题,采用影子集进行规避。仿真实验包含两种模式:非追踪模式(目标状态为0)和追踪模式(目标为三角函数轨迹)。结果表明,该控制方法能够有效实现姿态稳定和轨迹跟踪,在短暂调整后即可精确跟随目标轨迹。控制律设计考虑了不同参考系间的转换,通过DCM矩阵处理目标角速度的坐标变换问题。

weixin_50227659的博客 1221

Java反射学习总结(3)——反射的基本操作

方法的反射主要由下面两个步骤完成:第一步先通过Class类的基本API获取到某一个方法,第二部通过method.invoke(对象,参数列表)函数实现反射 package reflectTest; import java.lang.reflect.Method; public class MethodDemo { public static void main(String[] args)

mhady的博客 1013

腾讯开源CubeSandbox:为Agent打造可随时丢弃的安全沙箱环境

在人工智能与自动化技术快速发展的今天,智能体(Agent)在执行复杂任务时往往需要独立、完整的计算环境,但环境失控带来的安全风险一直是落地瓶颈。为解决这一痛点,可丢弃式沙箱技术应运而生。它通过轻量虚拟化原理实现环境秒级重建,并严格隔离宿主资源,即使Agent执行了恶意或误操作,也不会波及其他系统。这种技术价值在于平衡了灵活性与安全性,使开发者敢于赋予Agent更多自主操作权限。目前,这类技术已广泛应用于AI编程、自动化测试、数字员工、恶意代码分析等真实场景,成为Agent可靠运行的基石。腾讯开源的CubeS

weixin_42539414的博客 250

Java反射reflect学习笔记_3:反射类的方法

今天给大家po出我的第三份关于学习反射的笔记,关于对类的方法的反射。其中包括静态方法,普通方法,带参数的方法,以及最重要的String[]数组的方法的反射以及需要注意的细节问题,都是基础,所以请各位多多包涵! 有关前面两篇文章请看下面: Java反射reflect学习笔记_1:反射的简述 Java反射reflect学习笔记_2:反射类的构造函数

机智猫 1万+

3. 动手运行第一个 SAP Fiori Elements 应用(ListReport 类型)

这个代理服务器能够自动监听我们 Fiori Elements 应用里向 ES5 Demo 系统发送的 OData 请求,拦截这个请求,并通过 Node.js 代码向 ES5 服务器转发,拿到响应数据后再交还给 Fiori Elements 应用。后者对自己发出的请求被代理这件事情一无所知。本文的任务是,大家按照我的介绍,在本地成功运行笔者准备的这个 Fiori Elements 应用。的错误消息, 说明大家安装的 Node.js 版本没有达到本地运行 Fiori Elements 的最低要求。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1670

Unity之ASE+ShaderGraph+VFX入门到精通 目录

这里是ASE+ShaderGraph+VFX从入门到精通专栏的目录,不停更新中,有问题随时留言或者私信。

TxNet 2840

Java反射学习-3 - 反射获取属性,方法,构造器

1 package cn.tx.reflect; 2 3 import java.lang.reflect.Constructor; 4 import java.lang.reflect.Field; 5 import java.lang.reflect.Method; 6 import java.util.Arrays; 7 /** 8 * 三 ...

WGH100817的博客 161

【信息系统项目管理师】高分论文:论信息系统项目的整合管理(绩效考核系统)

我们将项目管理计划中的子计划包括项目范围、进度、成本、质量管理计划,过程改进计划,人力资源管理计划,风险、采购管理计划,干系人管理计划,项目范围、成本、进度基准作为依据,查看项目的各个方面,通过组织全体团体成员会议来解读由各监控过程提供的信息,之后我与项目管理团队一起制订所需措施,确保项目绩效达到预期要求。在一个项目中,变更是必然的,也是不可避免的,进度拖延,成本失控,客户有新的需求等都会引起项目的变更。在本项目中,我要求有处于工作状态的产品,开发人员才可以对其任意修改,修改完成后,重新入库即可。

数据知道的博客 6885

java反射 获取属性_Java反射学习-3 - 反射获取属性,方法,构造器

1 packagecn.tx.reflect;23 importjava.lang.reflect.Constructor;4 importjava.lang.reflect.Field;5 importjava.lang.reflect.Method;6 importjava.util.Arrays;7 /**8 * 三 、Class类中要掌握的方法:9 * 反射获取具体属性、方法、构造器10 ...

weixin_36117191的博客 216

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java学习笔记3——注解与反射

所有框架的底层:Mybatis、SpringBoot 1. 注解 Annotation是从JDK5.0开始引入的新技术。Annotation不是程序本身,可以对程序作出解释,可以被其他程序(如编译器)读取。Annotation的格式以“@注释名”在代码中存在,还可以添加一些参数值,例如@SuppressWarnings(value=“unchecked”)。Annotation可以附加在package、class、method、field等上面,相当于给他们添加了额外的辅助信息,可以通过反射机制编程实现对这

qq_42461714的博客 300

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java学习总结3——枚举类和反射机制

Java枚举类和反射机制 一、Java枚举类(Enum): 在某些情况下,一个类的对象是有限且固定的,对于这种对象的实例有限且固定的类,在 Java 中被称为枚举类(Enum);枚举类是为了提高代码可读性,原始值是int类型(从0开始)。 创建角色类型枚举类(RoleTypeEnum):Java 中使用 enum 关键字来定义枚举类 // 定义一个角色类型的枚举类 public enum Rol...

wanghao112956的博客 1116

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java学习之反射机制学习笔记--3

3、深入学习反射机制----取得类的结构 java.lang.reflection包中的几个类: Constructor--表示类中的构造方法 Field--表示类中的属性 Method--表示类中的方法 这三个都是AccessibleObject的子类 操作类: packa...

93

Java反射机制的学习(3)

Java反射机制的学习 Java反射机制是Java语言被视为准动态语言的关键性质。Java反射机制的核心就是允许在运行时通过Java Reflection APIs来取得已知名字的class类的相关信息,动态地生成此类,并调用其方法或修改其域(甚至是本身声明为private的域或方法)。 也许你使用Java已经很长时间了,可是几乎不会用到Java反射机制。你会嗤之以鼻地告诉我,Java反射机制

限量发行的专栏 551

J2SE学习笔记2.3Java中的反射

Java中的反射 一.java中反射的概述 java反射机制是运行状态中,对于任意一个类,能够知道这个类的所有属性和方法、对于任意一个对象,都能够调用它的任意一个方法。这种动态获取的信息以及动态调用对象的方法的功能就是java的反射机制。 在博客看到的一个特别简洁的概念解释:反射就是把java类中的各种成分映射成一个个的Java对象 例如:一个类有:成员变量、方法、构造方法、包等等的许多信...

qq_37835724的博客 269

Java反射机制学习3

代理静态代理方法interface ClothFactory{ void productCloth(); }class NikeClothFactory implements ClothFactory{ @Override public void productCloth() { System.out.println("Nike Factory product

积少成多,蒸蒸日上。 346

Java反射学习(3)(“反射“机制获取成员变量及详细信息(Field类))

本篇博客的内容:对"Class"对象实例化的常见三种方式以及使用时机的回顾。java中使用"反射"机制获取成员变量(字段)及内部的详细信息。使用Field类以及提供的相关方法进行成员变量(字段)的相关操作(获取成员变量对象、获取访问修饰符、获取存储的值、设置成员变量的值...)

岁岁岁平安的博客 1408

java高级开发学习之--反射机制(3)

1.通过前面的学习,自己感觉其实反射机制也没有很神秘,无非就是类本身就是一个对象,通过类的类类型去动态加载类。 2.今天学习类的方法的反射操作以及通过反射来了解集合泛型的本质。A.方法的反射操作: 首先我们创建一个类class A{ public void print(int a,int b){ System.out.println(a+b); } pub

Yjnull 457

JAVA技术之——反射 学习笔记-3 Method

JAVA反射机制定义:   JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 本笔记讲述如何使用反射获取一个类的所有方法并改变其内容。 [code="java"] import java.lang.reflect....

tianna55555的专栏 160

传智播客java学习3--静态导入、反射

今天我在听张孝祥老师讲的Java加强视频,张老师说:Java基础加强知识代表了一种java功力,也代表了你的学习能力,能掌握这些知识说明你以前的学习能力不错,具备这些知识,也说明你未来掌握新知识的潜能不错。我觉得张老师说的有道理,我的Java基础不是很好,因此,我要好好学学张老师讲的基础加强视频。 首先张老师讲了Myeclipse的一些使用技巧,讲了如何配置自己的Workspace与如何新

243
下一篇: java-反射初学(1)
Coder-Qian
博客等级 码龄11年 63粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值