2015-04-10 3 views
0

В моем классе я использовал стандартный методКак ovveride метода Строки valueOf

public static String valueOf(Object obj) { 
    return (obj == null) ? "null" : obj.toString(); 
} 

Как я могу ovveride или переопределять этот Metod в моем классе, что, вернуть что-то вроде этого:

public static String valueOf(Object obj) { 
     return (obj == null) ? "" : obj.toString(); 
    } 

ответ

2

Вы можете 't переопределить его (вы не можете переопределить какой-либо статический метод, и даже если он не был статичным, String - это последний класс, который не может быть расширен).

Нет ничего, что помешало бы вам реализовать его в своем классе по своему усмотрению и использовать вашу реализацию. Однако вы не можете заставить существующий код использовать вашу реализацию.

+0

Очень поможет полностью. Спасибо – Adamo

1

Статические методы не могут быть переопределены.

Кроме того, вы не можете переопределить нестатический метод, если ваш класс не расширяет класс, в котором он объявлен. Поэтому, даже если это нестатический, вы не можете переопределить его, если ваш класс не расширяет String (что он не делает 't, и не должен, и не может, так как String является окончательным).

Что вы можете сделать, это создать свой собственный метод и назвать его вместо встроенного.

+0

Очень помогите полностью. Спасибо – Adamo

1

Строка - последний класс. Вы не можете его продлить. Более того, этот метод valueOf является статическим методом, который нельзя переопределить.

+0

Вы можете переопределить его, но его на самом деле слишком скрыты !! –

+0

Очень помогает. Спасибо – Adamo

1

Если вы хотите, чтобы сделать вывод вашего объекта, вы можете просто переопределить toString() метод Object и вызвать System.out.println(obj)

@Override 
public String toString(){ 
    StringBuffer sb=new StringBuffer(); 
    sb.append(...); 
    sb.append(...); 
    return sb.toString(); 
} 
+0

Очень помогите полностью. благодаря – Adamo

Смежные вопросы