Учитывая обновления OP, реальный ответ здесь очень прост: java - это статически скомпилированный язык.
Подпись метода ... это то, что говорит подпись. В подписи написано, что нужно вернуть значение типа int. И это то, что вернет любой метод с int на своей подписи. Ничто в архитектуре Java не позволяет вам динамически изменять такие вещи во время выполнения. С этой точки зрения все ваши тесты для возвращаемого типа являются поддельными. Конструкция языка подразумевает, что ответом всегда является «метод возвращает int
». И, пожалуйста, обратите внимание: если возвращаемый тип будет ссылочным типом, скажем, Number
, то, конечно, у вас может быть один метод, возвращающий экземпляр Long, и еще один объект Integer (приводящий к различным типам, но все же подтипам Number)!
Помимо этого, ОП говорит о , глядя на разное время выполнения .
Да, junit запускает секундомер, чтобы примерно сказать вам, как долго выполняется каждый тест. Но это не измерение. Чтобы понять истинное влияние кода на производительность, вы должны сделать реальные измерения. С этой точки зрения: цифры от JUnit не означают того, что вы думаете, они имеют в виду. Они не являются подходящей основой для таких выводов.
См. Как написать правильный микро-тест в Java? для получения дополнительных указаний о том, как один может получить более значимые числа.