Object obj = getObject();
if(obj instanceof Integer)
load((Integer)obj);
else if(obj instanceof String)
load((String)obj);
else
load(obj);
Ошибка, поскольку перегруженный метод был выбран во время компиляции , но не во время выполнения , когда вы используете instanceof
.Чтобы переместить эту проверку во время выполнения, используйте, например, if...else
.
HINT
load(obj instanceof String ? (String)obj : obj);
Это нормально и не выдает ошибку компиляции, но что делатьВы думаете, какой перегруженный метод будет вызван, когда obj = "some string"
, load(String s)
???
NO !!! load(Object s)
для экземпляров String
и Object
.