首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Java中防止方法重载?

如何在Java中防止方法重载?
EN

Stack Overflow用户
提问于 2010-06-07 15:27:46
回答 8查看 8.6K关注 0票数 11

重写方法可以通过使用关键字final来防止,同样,如何防止重载?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-06-07 15:28:49

在Java中不能这样做。

重载方法基本上只是另一种方法。

一次尝试可能看起来像这样。

代码语言:javascript
运行
复制
void yourMethod(String arg) { /* ... */ }

void yourMethod(String arg, Object... prevent) {
    throw new IllegalArgumentException();
}

但它不会起作用,因为Java通过查看“最佳匹配”或“最具体的签名”来解决过载问题。

该方法仍然可以使用

代码语言:javascript
运行
复制
void yourMethod(String arg, String arg2) { /* ... */ }

它将在执行yourMethod("hello", "world")时被调用。

顺便说一句,你为什么要防止过载呢?也许还有另一种方法可以做你想做的事?

票数 13
EN

Stack Overflow用户

发布于 2010-06-07 15:35:18

你不能,因为这几乎毫无意义。

如果您想重载方法handle(..),但不允许这样做,那么您应该创建doHandle(..)

使用哪个重载方法是在编译时确定的(与在运行时确定的重载方法不同)。因此,重载的要点是为常见操作共享一个通用名称。不允许这样做是一个代码风格的问题,而不是其他任何事情。

票数 14
EN

Stack Overflow用户

发布于 2010-06-07 15:49:10

呃..。不允许重载该方法的意义是什么?

防止重写是允许的,因为它可以由另一个程序员完成,该程序员应该正在处理代码的另一部分,而他的类是从您的类继承而来的。

重载是在同一个类中完成的,从逻辑上讲,重载应该由了解此代码并且正在处理代码的同一部分的程序员来完成。所以,如果他知道这段代码(理论上),而且重载存在一些固有的危险,那么他应该已经知道了,因为他知道这段代码。

也就是说,重载不能像其他人已经描述的那样停止。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2987732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档