《JAVA筑基100例》「第42题」JAVA高级技术-(动态调用类中方法)

#头条创作挑战赛#

❤️作者简介:大家好,我是小虚竹。Java领域优质创作者,CSDN博客专家,华为云享专家,掘金年度人气作者,阿里云专家博主,51CTO专家博主

❤️技术活,该赏

❤️点赞 收藏 ⭐再看,养成习惯

零、前言

今天是学习 JAVA语言 打卡的第42天,我的学习策略很简单,题海策略+ 费曼学习法。如果能把这100题都认认真真自己实现一遍,那意味着 JAVA语言 已经筑基成功了。后面的进阶学习,可以继续跟着我,一起走向架构师之路。

一、题目描述

题目:在JAVA中,一般调用类的方法有两种方式:一种是静态方法,可以直接用类名调用;另一种是非静态方法,要使用类的对象进行调用。

反射机制提供了第三种调用方式:根据需要指定要调用 的方法,调用的方法连私有方法也是能调用到的。

实现:使用反射机制调用Math类的静态方法sin()和String类的非静态方法equals()。

二、解题思路

定义类:MethodTest

在main方法中调用Math类的静态方法sin()和String类的非静态方法equals()。

使用Method类的相关方法实现

Method类提供类或接口上单独某个方法信息

反映的方法可能是类方法或实例方法,或抽象方法。

使用Method类的invoke()方法可以实现动态调用方法。

三、代码详解

public class MethodTest {
    public static void main(String[] args) {
        try {
            System.out.println("调用Math类的静态方法sin()");
            Method sin = Math.class.getDeclaredMethod("sin", Double.TYPE);
            Double sin1 = (Double) sin.invoke(null, new Integer(1));
            System.out.println("1的正弦值是:" + sin1);
            System.out.println("调用String类的非静态方法equals()");
            Method equals = String.class.getDeclaredMethod("equals", Object.class);
            Boolean mrsoft = (Boolean) equals.invoke(new String("小虚竹"), "小虚竹");
            System.out.println("字符串是否是小虚竹:" + mrsoft);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

我是虚竹哥,我们下一题见~

展开阅读全文

页面更新:2024-03-24

标签:题海   进阶   华为   方法   静态   反射   题目   机制   策略   高级   专家   动态   技术

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top