千万别小看这个机制

本文介绍了Java中的反射机制,包括反射的定义、获取类的三种方法、通过反射创建对象及获取属性。反射机制允许程序在运行时动态获取类信息并调用其方法和属性,常用于框架设计。通过反射,可以避免硬编码,提高代码的灵活性。在实际开发中,如Servlet已采用注解减少XML配置,反射也在其中起到关键作用。
摘要由CSDN通过智能技术生成

一、前言
在学习Java的过程中,为了得到某些信息,需要采取一定的手段,运用某种技术去获取,这种技术就是所谓的机制。在学习过程中,我们应该也有体会,只不过没有去深度挖掘,那么Java中都有哪些机制呢?接下来就跟大家聊一聊反射机制。
二、Java中的反射机制
1.反射的定义
当程序在运行时,对于任意一个类,可以知道它的属性和方法;对于任意一个对象来说,可以调用它的方法和属性,这种动态获取信息和调用对象的方法的功能就称之为反射。
其实我们反过来想一想,对象是如何创建的,无非就是那四种方法:
(1)通过关键字new (最常用)
(2)运用反射手段,调用Java.lang.classnew Instance()实例方法
(3)调用对象的clone()方法
(4)运用反序列化手段。
所以要获取类当然也可以通过反射手段。

2.反射的三种方法
(1)利用对象获取类
(2)利用类获取
(3)利用类的全路径获取

图1.三种获取类的方法
在这里插入图片描述

3.通过反射创建对象
在这里插入图片描述
5.获取属性
(1)获取所有属性
在这里插入图片描述
在这里插入图片描述

(2)获取特定属性
在这里插入图片描述
在这里插入图片描述
4.总结反射的作用
看完上面的演示,大家都知道反射的初始应用,其实反射是用来做框架的,所以才有了这句经典的老话:反射是框架设计的灵魂,搞懂反射可以帮助我们理解框架的构造,在做项目的过程中,我们需要使用getset方法,来获取属性,现在在Servlet的开发中,已经引入了注解,就无需配置web.xml文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用辗转相除法和最小公倍数的性质来解决这个问题。具体步骤如下: 1. 定义一个函数 gcd(a, b),用于求两个数 a 和 b 的最大公约数。可以使用辗转相除法来实现。 2. 定义一个函数 lcm(a, b),用于求两个数 a 和 b 的最小公倍数。根据最小公倍数的定义,它等于 a 和 b 的乘积除以它们的最大公约数,即 lcm(a, b) = a * b / gcd(a, b)。 3. 对于输入的 n,从 1 到 n 依次计算它们的最小公倍数,每次计算都将结果保存下来。具体来说,可以使用一个变量 ans 来记录当前的最小公倍数,初始值为 1,然后对于每个 i(1 <= i <= n),更新 ans 为 lcm(ans, i)。 4. 最后返回 ans,即为 1~n 的最小公倍数。 下面是 Python 代码实现: ```python def gcd(a, b): """求两个数的最大公约数""" while b: a, b = b, a % b return a def lcm(a, b): """求两个数的最小公倍数""" return a * b // gcd(a, b) def smallest_lcm(n): """求1~n的最小公倍数""" ans = 1 for i in range(1, n+1): ans = lcm(ans, i) return ans # 测试 print(smallest_lcm(10)) # 输出 2520 print(smallest_lcm(20)) # 输出 232792560 print(smallest_lcm(100)) # 输出 69720375229712477164533808935312303556800 ``` 注意,当 n 很大时,最小公倍数可能会超出 Python 的整数范围,导致计算结果不正确。这时可以使用 Python 中的 Decimal 类型来避免这个问题。例如,将最小公倍数的计算结果存储在一个 Decimal 对象中,每次更新时也需要使用 Decimal 类型的 lcm 函数来计算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值