Если вы это сделаете, вы получите несовместимый с классом java.lang.String и со всеми классами, полагаясь на java.lang.String, что очень, очень редко является хорошей идеей.
Второй проблемой может быть лицензия. Для самостоятельного изучения это прекрасно, но если вы публикуете свой код (скомпилированный или в исходном коде), вы должны внимательно ознакомиться с условиями лицензии.
Поскольку класс String объявлен окончательным, вы даже не можете наследовать от String и реализовать свою PacerierString, которая кажется полезной с первого взгляда. Но есть так много людей, которые бы реализовали своих маленьких помощников, и мы получили бы множество классов SpecialString со всех сторон.
Обычной практикой было бы людей, написание класса Foo, и добавление метода
public Foo toFoo() {
// some conversion for String representation of Foo
}
их UniversalToolString.
Вы можете, однако, написать Wrapper, который содержит строку. Вы не можете передать свой Wrapper методу, который ожидает String, но вам нужно будет вызвать его метод toString(), если это окажется хорошим кандидатом для этой цели.
Foo foo = new Foo ("foobar", 42);
foo.setMagic (foo.toString().length);
Не лучше ли писать собственные реализации (классы полезности), а не воспроизводить существующие классы. –
Что вы пытаетесь сделать, добавив методы в существующие классы? Существует, безусловно, лучшее решение того, что вы пытаетесь сделать. – casablanca
@casablanca Например, я хочу получить доступ к закрытым полям класса ('java.lang.String.value') – Pacerier