javase-reflect-210709-03

均值场博弈_平均场博弈(mean field game) The New Big Fish Called Mean-Field Game Theory原文链接http://www.science4all.org/article/mean-field-games/​www.science4all.org主要内容在经典博弈论中,它对附近其他鱼类的行为做出反应。这是非常复杂的,因为不同的鱼类之间会有大量的相互作用。这意味着经典博弈论对应于一长串高度耦合的方程。... 阅读详情

javase-reflect-210709-03

  • 可变参数长度
  • 反射获取Method-01
  • 反射获取Method-02
  • 通过反射调用方法
  • UserService.java

可变参数长度

ReflectMethodTest01.java

package bgy_reflect_method_210709_01;
/*
    可变长度参数
    int... args 就是可变长度参数

    1. 可变长度参数要求的参数个数是:0~N个
    2. 可变长度参数在参数列表中必须在最后一个位置上
    3. 可变长度参数可以当做一个数组来看
 */
public class ReflectMethodTest01 {
    public static void main(String[] args) {
        test();

        test(10);
        test(10,"10",10);

        // 如果方法名相同,参数个数一样,参数类型不同,会报错
        // 它不知道调用哪个test
//        test("aaa");

        // 编译器报错,参数类型保持一致
//        test(true);


        t(1,2,3,4,5,6);

        // 也可以传一个数组
        int[] numbers = {10,20,30,40};
        t(numbers);
    }

    public static void test(int... args){
        System.out.println("test方法执行了");
    }

    // int... 必须放在最后一个
    public static void test(int c1,String c2,int... args){
        System.out.println("test方法执行了");
    }

//    public static void test(String... args){
//        System.out.println("test方法执行了");
//    }

//    public static void test(int... args,int... args){}

    public static void t(int... args){
        // args有length属性,说明args是一个数组
        // 可以把它当做一个数组来看
        for (int i = 0; i < args.length; i++) {
            System.out.println(args[i]);
        }
    }
}

反射获取Method-01

ReflectMethodTest02.java

package bgy_reflect_method_210709_01;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

/*
    反射Method(方法)
 */
public class ReflectMethodTest02 {
    public static void main(String[] args) throws Exception {

        // 获取类
        Class userServiceClass = Class.forName("bgy_reflect_method_210709_01.UserService");
        // 获取所有的Method(包括私有的)
        Method[] methods = userServiceClass.getDeclaredMethods();
        System.out.println("fields长度为:"+methods.length);
        // 遍历Method
        for (Method method : methods) {
            // 获取修饰符
            System.out.println(Modifier.toString(method.getModifiers()));
            // 获取返回类型
            System.out.println(method.getReturnType());
            // 获取方法名
            System.out.println(method.getName());
            // 获取方法参数的修饰符列表,因为方法参数可能会有多个
            Class[] parameterTypes = method.getParameterTypes();
            for (Class parameterType : parameterTypes){
                System.out.println(parameterType.getSimpleName());
            }

            // 换行,控制台看者舒服
            System.out.println();
        }
    }
}

反射获取Method-02

ReflectMethodTest03.java

package bgy_reflect_method_210709_01;
/*
    获取Method
 */

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

public class ReflectMethodTest03 {
    public static void main(String[] args) throws Exception {
        // 追加用
        StringBuffer s = new StringBuffer();

        // 获取类
        Class userService = Class.forName("bgy_reflect_method_210709_01.UserService");
//        Class userService = Class.forName("java.lang.String");

        // 追加UserService头儿
        s.append(Modifier.toString(userService.getModifiers())+" class "+ userService.getSimpleName()+"{\n");

        // 获取 Method
        Method[] userServiceDeclaredMethods = userService.getDeclaredMethods();
        // 遍历追加
        for (Method method : userServiceDeclaredMethods){
            // 获取修饰符,并追加
            String methodModifier = Modifier.toString(method.getModifiers());
            s.append("\t");
            s.append(methodModifier);

            // 获取返会类型,并追加
            s.append(" ");
            Class returnType = method.getReturnType();
            String methodSimpleName = returnType.getSimpleName();
            s.append(methodSimpleName);

            // 获取方法名,并追加
            s.append(" ");
            s.append(method.getName());
            s.append("(");

            // 获取方法参数,并追加
            Class[] parameterTypes = method.getParameterTypes();
            for (Class parameterType : parameterTypes){
                s.append(parameterType.getSimpleName());
                s.append(",");
            }

            // 删除最后一个 “  , ”
            if (parameterTypes.length >0){
                s.deleteCharAt(s.length()-1);
            }

            s.append("){};");
            s.append("\n");
        }

        // 追加UserService尾巴儿
        s.append("}");

        System.out.println(s);
    }
}

通过反射调用方法

package bgy_reflect_method_210709_01;
/*
    通过反射调用方法
    重要

    反射机制,让代码具有通用性,可变化的内容都写到配置文件中去
    将来修改配置文件,=创建的对象就不一样了,调用方法也不一样了
    代码不需要任何改变
 */

import java.lang.reflect.Method;

public class ReflectMethodTest04 {
    public static void main(String[] args) throws  Exception {
        /*
            1.
            不通过反射调用方法

            调用要素:
                要素1:userService对象
                要素2:login方法名
                要素3:实参列表
                要素4:返回值
         */
        UserService userService = new UserService();
        System.out.println(userService.login("admin","admin"));

        /*
            2.
            通过反射调用方法
         */
        // 获取对象
        Class userServiceClass = Class.forName("bgy_reflect_method_210709_01.UserService");
        // 创建对象
        Object obj = userServiceClass.newInstance();
        // 获取Method
        Method loginMethod = userServiceClass.getDeclaredMethod("login", String.class, String.class);
        // 调用要素
        // 要素1:loginMethod方法
        // 要素2:obj对象
        // 要素3:”admin“,”admin“实参
        // 要素4:resultValue 返回值
        Object resultValue = loginMethod.invoke(obj,"admin","admin");
        System.out.println(resultValue);
    }
}

UserService.java

package bgy_reflect_method_210709_01;

public class UserService {

    /**
     * 登录方法
     * @param name
     * @param password
     * @return true表示登录成功,false表示登录失败
     */
    public boolean login(String name,String password){
        if (name.equals("admin") && password.equals("admin")) {
            return true;
        }
        return false;
    }


    /**
     * 系统退出
     */
    public void logout(){
        System.out.println("系统已经安全退出");
    }

    public static void test(int a,String b,double c){
        System.out.println("测试有多个修饰符和多个参数");
    }

}
模拟CMOS 第2章 MOS器件物理基础 模拟CMOS 第2章 MOS器件物理基础 文章目录模拟CMOS 第2章 MOS器件物理基础2.1 基本概念2.1.1 MOSEFT开关2.1.2 MOSEFT结构2.1.3 MOS符号2.2 MOS的I/V特性2.2.1 阈值电压2.2.2 I/V特性的推导2.3 二级效应2.4 MOS器件模型2.4.1 MOS器件版图2.4.2 MOS器件电容2.4.3 MOS小信号模型2.4.4 MOS SPICE模型2.4.5 NMOS与PMOS器件的比较2.4.6 长沟道器件与短沟道器件的比较附录A 用作电容器MO 阅读详情

相关推荐

CIC-IDS2017数据集训练和测试

1、数据集预处理 1.1整合数据并剔除脏数据 如上图所示,整个数据集是分开的,想要训练,必须要整合在一起,同时在数据集中存在Nan和Infiniti脏数据(只有第15列和第16列存在)需要剔除: 具体代码如下: ```python importpandasaspd #按行合并多个Dataframe数据 defmergeData(): monday=writeData("data\MachineLearningCVE\Monday-W...

蓝亚之舟的博客 2万+

javase-reflect-210709-02

javase-reflect-210709-02 Field 反射的使用 Field获取属性 Field模拟反射属性的java代码 Field获取属性值 / 赋值 Field访问私有属性 Student.java Field获取属性 ReflectTest01.java package bgy_reflect210709_01; import java.lang.reflect.Field; import java.lang.reflect.Modifier; public class Reflec

白光一的博客 180

【AutoDL + Langchain-Chatchat】从零构建高效本地 RAG 知识库问答系统:实战保姆级教程(含避坑指南)

本文详细阐述如何在AutoDL云平台,如何利用Langchain-Chatchat构建高效的本地RAG知识库问答系统,并深入解析RAG架构。从环境搭建到实战部署,从问题排查到性能优化,提供一份全面实用的指南,助力开发者快速构建智能问答应用。

拾光夕拾的博客 1803

javase-reflect-210709-04

javase-reflect-constructor-210709-04 反编译一个类的Constructor构造方法 通过反射创建对象 通过反射获取父类或者获取实现的接口 反编译一个类的Constructor构造方法 ReflectTest01.java package bgy_reflect_constructor_01; import java.lang.reflect.Constructor; import java.lang.reflect.Modifier; /* 反编译一个类

白光一的博客 175

手把手教你用THS4551搭建全差分放大器电路(附ADC驱动实战)

本文详细介绍了如何使用TI的THS4551全差分放大器搭建高性能ADC驱动电路,涵盖芯片选型、电路配置、PCB布局及实战调试等关键环节。THS4551凭借其优异的共模抑制比和宽电源电压范围,成为驱动16位及以上精度ADC的理想选择,特别适合工业应用场景。

weixin_30338481的博客 282

基于C#的工业机器人上位机控制程序开发(搭配松下PLC+MC协议)

基于C#的工业机器人上位机控制程序开发,核心是上位机与松下PLC的MC协议通信和机器人控制的安全逻辑,而不是单纯的界面编写。在工控现场,程序的稳定性和安全性永远是第一位的——比如解耦通信逻辑、处理跨线程问题、添加安全互锁、记录操作日志,这些都是保证产线稳定运行的关键。新手在学习时,建议先跟着步骤搭建好环境,跑通基础的PLC通信和机器人控制功能,再逐步尝试进阶优化。数据模型化、通信封装化、逻辑模块化、UI解耦化。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1240

javase-io-210509-02

javase-io-210509-02 File FIle Fiel 1、 File类和四大家族没有关系,所以FIle类不能完成对文件的读和写 2、 FIle对象代表 文件和目录路径名的抽象表示形式 C:\bgy 这是一个文件 C:\bgy\bgy.txt 这也是一个文件 Demo01.java import java.io.File; import java.io.IOException; public class Demo01 { public static v

白光一的博客 286

C#串口通信从入门到精通(7)——整数/浮点数与二进制、八进制、十六进制之间的转换与C#实现

本文详细介绍由博主开发的DataConvert串口通信帮助类的用法,该帮助类涵盖了串口通信领域所有的数据转换方法,帮助大家快速编写串口通信程序!

qq_34059233的博客 2880

javase-collection-210623-02

javase-collection-210623-02 HashTable Properties HasTableTest01.java package bgy_hashtable01; import java.util.Hashtable; import java.util.Map; /* 1. HashTable中的方法都带有synchronized关键字,是线程安全的 线程安全目前有其它方案,HashTable对线程的处理导致效率较低,所以使用较少 2

白光一的博客 275

OFDM调制解调系统信道估计和均衡算法的MATLAB仿真

然后,从接收到的信号中提取导频序列,并使用LS算法进行信道估计。OFDM(正交频分复用)是一种常用于高速数据传输的调制技术,它将高速数据流分割成多个低速子载波,通过在不同的子载波上传输数据,实现了频域上的正交性。因此,信道估计和均衡算法在OFDM系统中起着至关重要的作用,用于减小信道衰落引起的影响。通过运行上述代码,可以进行基于LS算法的OFDM调制解调系统信道估计和均衡的MATLAB仿真。本文将介绍一种基于LS(最小二乘)算法的OFDM调制解调系统信道估计和均衡算法,并提供相应的MATLAB仿真代码。

uote_e的博客 229

lammps后处理:堆垛层错和孪晶的数量统计

python调用ovito包可以免费实现ovito pro版本的功能,不需要安装ovito pro软件,如统计位错线长度、CNA结构、键角分布等,如需深入学习,可考虑报名python ovito后处理课程,或lammps一对一课程。lammps金属变形模拟中,可能会产生堆垛层错或者孪晶等结构,但是ovito免费版本无法统计这些结构的数量。使用python和ovito软件包,则可以方便的统计出这些结构的数量。大家好,我是小马老师。

lammps_jiayou的博客 467

javase-collection-210619-01

javase-collection-210619-01 Collection------remove() 在集合中使用remove()方法,会使得集合的结构发生改变,如果此时迭代器还是原来的那个,会报错 例子:CollectionTest02.java 1. 如果使用集合的remove()方法进行删除,要通知迭代器更新,否则报错 2. 或者使用迭代器的remove()方法进行删除 CollectionTest01.java package bgy_test_2161901; import j

白光一的博客 253

OpenClaw 生成测试用例

OpenClaw 只是躯干,Skills 才是灵魂。很多同学觉得 OpenClaw 没用,就像是买了一台顶级电脑却没装操作系统。通过这四步走,不仅可以学会如何让 AI 干活,更重要的是,可以学会如何管理 AI 的能力。

十二测试录 738

javase-collection-210408-01

javase-collection-210408-01 什么是集合 集合继承图 Collection常用方法 集合遍历迭代 contains方法 什么是集合 集合就是一个容器,数组就是一个集合,它可以来容纳其他类型的数据 集合不能直接存储基本类型的数据,另外集合也不能直接存储java对象, 集合当中存储的都是java对象的内存地址,或者说是集合中存储的引用 注:集合在java中本身是一个容器,是一个对象,集合中任何时候储存的都是引用 在java中每一个不同的集合,底层会对应不同的数据结构。往不

白光一的博客 250

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

javase-io-210510-02

javase-io-210510-02 IO+Properties 读取配置文件 读取配置文件 IO + Properties Properties 是一个Map集合,key和value都是String类型 经常变的数据,可以单独写到一个文件中,让程序动态读取 那么我们就需要配置文件了,java规范中要求,属性的配置文件建议以 .properties 结尾,,但不是必须是 Demo01.java package com.bgy02; import java.io.FileNotFoundE

白光一的博客 240

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

javase-collection-210623-01

javase-collection-HashMap-210623-01 HashMap HashMapTest01.java package bgy_hashmap01; /* 1. HashMap底层用的是 哈希表/散列表 的数据结构 1)哈希表是一个数组和单向链表的结合体 2)它是一个一维数组,数组中每一个元素是一个单向链表 3)数组:查询效率高,随机增删效率低 4)单向链表:随机增删效率高,查询效率低 1)

白光一的博客 235

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

javase-collection-210620-01

javase-collection-210620-01 List ArrayList ListTest01.java package bgy_list_01; import java.util.*; /* 1. List 特点: 有序可重复 1)有序:List集合中的元素有下标 从0开始,以1递增 2)可重复:存一个‘bgy’,还能再存一个‘bgy’ 2. List是Collection的子接口

白光一的博客 230

javase-collection-210624-01

javase-collection-210624-01 TreeSet Collections工具类 TreeSetTest01.java package bgy_treeset01; /* 1. TreeSet 集合底层实际上是一个TreeMap 2. TreeMap集合底层是一个二叉树 3. 放到TreeSet集合中的元素,等同于放到TreeMap集合key部分了 4. TreeSet集合 无序不可重复,可以按照元素的大小顺序自动排序,

白光一的博客 228

javase-io-210508-01

javase-io-210508-01 什么是IO IO分类 Java中IO四个部落 需要知道 1、什么是IO流 ​ I:Input ​ O:Output ​ 通过IO完成对硬盘文件的读和写 2、IO分类 1. 按照 流 的方式进行分类 以内存为参照物 往内存中去,叫做输入(Input),也叫读(Read) 从内存中出来,叫做输出(Output),也叫做写(Write) 2. 按照读取数据方式进行分类 一、 按照 字节方式

白光一的博客 217

javase-annotation-210710-01

javase-annotation-210710-01 注解解释 元注解 Retention源码 Target源码 注解解释 1) 注解 也叫注释,Annotation 2) 注解Annotation是一种引用数据类型,编译之后也是生成xxx.class文件 3) 自定义注解,语法如下: [修饰符列表] @interface 注解类型名{ } 4) 注解如何使用?在哪里使用? 注解使用语法格式: @注解类型名 注解可以出现在类上,属性上,方法上,变量上等

白光一的博客 211

javase-annotation-210710-02

javase-annotation-210710-02 注解中可以用的属性类型 反射获取类上的注解 反射获取类中方法上的注解 注解实例 注解中可以用的属性类型 MyAnnotation0301.java package bgy_annotation_02; public @interface MyAnnotation0301 { /* 注解当中的属性可以是哪种类型 byte short int long float double bool

白光一的博客 209

javase-reflect-210625-01

javase-reflect-210625-01 反射的理解 反射机制有什么用? 通过java语言中的反射机制可以操作字节码文件 类似于黑客。(可以读和修改字节码文件) 通过反射机制可以操作代码片段(class文件) 反射机制的相关类的包 java.lang.reflect.*; 反射机制的相关的重要类 java.lang.Class 代表整个字节码,代表一个类型。 代表整个类 java.lang.reflect.Method 代表字节码中的方法字节码。 代表类中的方法 J...

白光一的博客 206

javase-collection-210621-01

javase-collection-210621-01 LinkedList Vector LinkedListTest01.java package bgy_linkedlist01; /* LinkedList 的数据结构是 双向链表 基础单元为节点node 每一个节点node都有两个属性: 1. 存储的数据 2. 下一个节点的内存地址 LinkedList集合底层也是有下标的 ArrayL

白光一的博客 202

javase-javabase-210126-02

javase-javabase-210126-02 JavaDoc Scanner对象 重载 可变参数 递归 Java内存 数组 Arrays类 JavaDoc @author 作者名 @version 版本号 @since 指明需要最早使用的jdk版本 @param 参数名 @return 返回值情况 @throws

白光一的博客 199

javase-io-210509-01

javase-io-210509-01 FileReader FileWriter 拷贝 BufferedReader InputStreamReader BufferedWriter DataOutputStream DataInputStream PrintStream FileReader ​ 文件字符输入流,只能读取普通文本 ​ 读取文本内容,比较方便,快捷 Demo01 import java.io.FileNotFoundException; import java.io.FileRead

白光一的博客 197

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 292
上一篇: javase-reflect-210709-02
下一篇: javase-reflect-210709-04
白光一
博客等级 码龄9年 0粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值