关于同包不能有同名类

最近做了一个小的java项目,在事件监听这块一直给报:java.lang.ClassCastException:xx.Mypanel cannot be cast to java.awt.event.KeyListener

反复检查一直不知道错误出在哪,最后突然意识到在该包下还有一个MyPanel类,造成了混乱,同包下不能有同名类

问题很小,一般人不会想到这点,但是偶尔的手误让我浪费了很多时间,引以为戒。

转载于:https://www.cnblogs.com/kapok-Garden/p/10070299.html

在 Python 中,虽然你可以创建与内置函数的自定义函数,但这并不是一个好的实践。这样做会导致覆盖(也叫遮蔽)原有的内置函数,可能会引起程序中的错误或不可预期的行为。 ### 为什么不应该重命内置函数? 1. **混淆和错误**:如果你不小心使用了相称,并更改了一个内置函数的功能,那么后续代码中任何依赖原始版本的地方都可能出现问题。 2. **调试困难**:当出现问题时,追踪问题是由于你自己定义的函数取代了内置函数而造成的,会变得更加复杂。 3. **维护难题**:对于其他开发者来说,如果他们看到一段看起来像是调用了标准库功能但实际上却是用户自定义的东西,这会让理解和修改变得非常棘手。 ### 示例 假设我们有一个需求需要计算列表元素之和,但是又希望加入一些额外逻辑处理每个数值后再求和。下面这个例子展示的就是这种情况下的不当操作: ```python def sum(numbers): total = 0 for num in numbers: if isinstance(num, int): # 假设只对整型做特殊转换 processed_num = abs(num)*num else: processed_num = num total += processed_num return total numbers_list = [1,-2,'a',4] print(sum([1,2,3])) # 这里本应返回6,但由于sum被重新定义,结果未知 ``` 在这里,`sum()` 已经不是原来的那个用于求数组所有项相加之和的标准库方法了;现在它是一个全新的实现。因此当你尝试再次正常使用原生的 `sum()` 函数时就会遇到麻烦。 正确的做法应该避免用自己的字覆盖现有的系统级命令/关键字等等... --- 当然有时候为了简化或者扩展某些功能,确实可能需要构建类似于官方所提供的API风格的服务端口镜像之类的工具集模块,在这种情况下则应当采取适当的措施加以区分标识出来——例如添加前缀 `_my_`, 组织成单独结构等形式明确分开两者之间的界限区别开来管理起来也就方便多了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值