java - 在 Java 中,在编译时而非运行时捕获错误

标签 java object

我有一个方法(称之为 foo),如下所示: public void foo (String parm) 我知道有时需要一个整数,我将其转换为字符串(不仅仅是“”+x,它比这更复杂,你不能仅通过查看 int 值来确定字符串值。int 值将是用作索引。

所以现在我这样做:

public void foo(Object obj) {
 if (obj instanceof String) {
     ...
 } else if (obj instanceof Integer) {
     ...
 } else // some sort of error
}

如果您执行以下操作,则不会在编译时捕获错误:

foo(new Date());

有没有办法在编译时捕获这个问题(除了创建两个单独的方法 public void foo(Integer x)public void foo (String str)

最佳答案

当然,构建 foo重载版本:

foo(String obj)

foo(整数对象)

并删除通用的。如果必须的话,让它们调用通用(private)_foo(Object obj)

关于java - 在 Java 中,在编译时而非运行时捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36794858/

相关文章:

java - 为什么会有 LoadStore 指令?

java - 为什么我的 ArrayList 只打印出最后一个被调用的子类?

c++ - 获取指向列表中对象的永久指针

c# - 从 c# 中的 namevaluecollection 填充对象数组

php - 将对象评估为 bool 值

javascript - jQuery 对象初始化

java - 如何根据 "last modified"计算每小时的文档数

java - Spring Webflow 绑定(bind) : Converter - java. lang.IllegalArgumentException : Each converter object must implement one of the Converter . .. 接口(interface)

java - 同步块(synchronized block)实现上的差异

javascript - 在canvas中通过for循环创建形状