Вам показали два основных варианта: использовать getter или переопределять valueOf/toString. Но такое неявное изменение объекта при каждом обращении может работать не так, как Вы этого ожидаете. Будьте аккуратны при использовании подобных "читерских" решений, и обязательно документируйте такой код. Если бы я увидел подобное в общедоступном коде, я бы расстроился :-)