2013-04-15 2 views
1

Ну, я думал о таких методах. Они не восстанавливают параметры, но они работают с ними.Как работает метод parameter.method()?

Пример: .replace(Char, Char) String API, он работает со строкой, за которой следует точка.

Как:

String test = "= Text = without = equals"; 
String output = test.replace("=",""); 

Как это работает без приема тест параметра? Мне просто любопытно, я хочу сделать такой метод.

Извините за мой плохой английский! Спасибо.

+0

Кажется, вы считаете параметр 'test' как параметр, это не так, это просто объект, который вызывает свой метод класса строк. – exexzian

+0

Ну, я имею в виду, что это не получает параметр« replace (test », = "," ");' – Mueretee

+1

Купить базовую книгу java. Он расскажет вам, как работают функции-члены. Даже Learn Java в 10-минутной типе книги покроет это. Эта тема, вероятно, будет охватываться где-то между 2-й и 3-й минутами. – user93353

ответ

0

Допустим, вы строите новый тип String, который только делает заменить материал (почему бы и нет ?!):

public class MyString { 
    private final String s; 
    public MyString(String s) { 
     this.s = s; 
    } 
    public String replace(String search, String replace) { 
     return s.replace(search, replace); 
    } 
} 

Теперь вы можете называть это так:

MyString myString = new MyString("= Text = without = equals"); 
String output = myString.replace("=", ""); 

Et вуаля , вы сделали тот же «трюк»! И вы можете увидеть, как это работает: ваш объект MyString хранит некоторые данные внутри (переменная s) и может получить доступ к этим данным из своих методов.

+0

Спасибо! Теперь я вижу, как это работает! Извините, если это был вопрос «Noob»! – Mueretee

0

Это instance methods, а это значит, что для работы требуется экземпляр класса. Таким образом, класс string знает значение test в вашем примере, так как он имеет доступ к данным, которые были созданы.

Чтобы создать эти типы методов, просто определите их в своем классе и не ставьте их как статические.

0

String - это объект. Определение класса является частью стандартной библиотеки Java. Это определение включает метод replace.

Поскольку String является классом final, вы не можете подклассифицировать его, чтобы добавить дополнительные методы. Поэтому вы не можете делать то, что вы пытаетесь сделать.