假设一个方法如下:
void foo(int i)
{
}
有没有办法使以下调用非法或产生异常?
foo((short)3);
也许这个?
class AClass {
void foo(int x) { /* do work */ }
void foo(short x) { throw new IllegalArgumentException(); }
}
Bruno 的重载将起作用,但如果您正在考虑防止其他类型的转换,您总是可以将整数装箱到它的 Object 类中:
void foo(Integer i) {
// handle data normally
}
这将阻止您向它发送简短的参数。
此解决方案可能不是您正在寻找的,但我会使用函数重载来创建一个版本void foo(int)
,它像正常一样处理数据,另一个版本的签名void foo(short)
像处理数据一样是错误的。例如:
void foo(int i) {
// handle data normally
}
void foo(short s) {
throw new IllegalArgumentException("your message here");
}