разные подписи для доступа к методам класса

1

Я действительно немного смущен. Обычная подпись для вызова метода или переменной доступного класса (класс/объект). (Метод/переменная). Тогда как мы даем System.out.println()? Поскольку System.out дает только тип возвращаемого значения, но не относится к одному классу. Также в сервлетах this.getServletConfig() getInitParameter ("defaultUser") не имеет для меня смысла, поскольку getServletConfig() и getInitParameter являются функциями-членами одного и того же класса, поэтому подпись становится чем-то вроде class.method1().method2(), где method1 и method2 являются функциями-членами одного класса. Может кто-то объяснить, пожалуйста.

Пример:

Class CascMethodClassB() 
{ 
public CascMethodClassA methodTest()
{
    CascMethodClassA obj1 = new CascMethodClassA();
    return obj1;
}
} /*Class CascMethodClassB ends*/

Class CascMethodClassA() 
{
public int varTest;

public CascMethodClassA()
{
varTest = 7;
}

} /*Class CascMethodClassA ends*/


Class CascMethodClassC() 
{
CascMethodClassB obj2 = new CascMethodClassB();
int varTestC = obj2.methodTest().varTest

public static void main(String[] args)
{
System.out.println("varTest in CascMethodClassA is: "+ varTestC);

} /*Class CascMethodClassC ends*/

}

Благодарю, Фрагги.

Теги:
servlets
method-signature

3 ответа

1
Лучший ответ

Оба варианта - разные.

В первом случае out является открытым статическим членом в классе System. Член out имеет тип PrintStream, поэтому вызов

System.out.println()

вызовет метод println() из объекта PrintStream (out).

Второй случай - это то, что называется цепочкой методов. Случается, что class.method1() вернет экземпляр объекта, в соответствии с документами Java он вернет объект ServetConfig. Таким образом, вы можете снова вызвать метод из этого возвращенного объекта. Другой способ увидеть этот вызов (скобки являются избыточными, просто там, чтобы вы могли визуализировать порядок вызовов):

(ClassName.someMethod1()).someMethod2();
  • 0
    это также означает, что если возвращаемый тип methodA ClassA равен Integer, а также его переменная, variableA и ClassC имеют открытый метод methodC возвращаемого типа Integer, я могу вызвать methodC как-то так: ClassA obj1 = new ClassA (); obj1.methodA.methodC () или obj1.variableA.methodC (); Большое спасибо за то, что нашли время ответить.
  • 0
    Кроме того, что вы думаете о String myPost = " lillbitofeverythingagain.blogspot.com/2014/03/takeaways.html "
Показать ещё 6 комментариев
1
  • System.out - это публичная переменная класса типа PrintStream, а не метод. Поэтому вы можете вызвать на нем метод println, который возвращает void.
  • this.getServletConfig().getInitParameter("defaultUser") имеет смысл, если вы понимаете вызовы метода цепочки. В этом случае вы:
    • вызов настоящего экземпляра Servlet
    • получение значения его экземпляра типа ServletConfig
    • получение getInitParameter либо значения String возвращается getInitParameter метода getInitParameter объекта ServletConfig
  • Наконец, подпись метода состоит из имени метода и типов параметров
  • 0
    Привет, Мена, значит ли это, что если возвращаемый тип methodA класса ClassA равен Integer, а также его переменная, variableA и ClassC имеет открытый метод methodC возвращаемого типа Integer, я могу вызвать methodC как-то так: ClassA obj1 = new ClassA () ; obj1.methodA.methodC () или obj1.variableA.methodC (); Большое спасибо за ответ.
  • 0
    @ user3595802 сложно сказать, не очень понятно из твоего вопроса. Как правило, либо отредактируйте этот вопрос с помощью своего кода, если это уместно (и компилирует), либо задайте новый вопрос. Одно можно сказать наверняка, что вызов метода подразумевает круглые скобки, поэтому это либо obj1.methodA().etc... obj1.methodA(whateverCommaSeparatedArguments).etc... obj1.methodA().etc... либо obj1.methodA(whateverCommaSeparatedArguments).etc... , либо obj1.variableA.etc...
Показать ещё 1 комментарий
1

Каждый не-void метод возвращает тип, который может быть другим типом для класса объявления, поэтому в цепоченном методе/поле будут указаны методы возвращаемого типа (а не класс, из которого он вызвал, или класс, определяемый первым методом в).

Например, чтобы разбить System.out.printkln():

System.out // out is a public field of type PrintStream
.println() // println() is a method of PrintStream, not System
  • 0
    Спасибо Богемный ..

Ещё вопросы

Сообщество Overcoder
Наверх
Меню