Как вызвать метод в java?

Как вызвать метод, который находится в другом classе того же пакета в java? Я знаю, что с помощью объекта мы можем вызвать метод из другого classа. Есть ли другой способ вызова метода другого classа?

Создайте экземпляр classа B:

B b=new B(); b.method(); 

или определить статический метод в classе B:

 class B { static void staticMethod(); } 

и назовите его так:

 B.staticMethod(); 

Методы – это методы объекта или методы classа .

Методы объекта: он применяется к объекту. Вы должны использовать экземпляр:

 instance.method(args...); 

Методы classа: применяется к classу. У него нет неявного экземпляра. Вы должны использовать сам class. Это больше похоже на процедурное программирование.

 ClassWithStaticMethod.method(args...); 

reflection

С рефлексией у вас есть API для программного доступа к методам, будь то методы classа или объекта.

Методы экземпляра: methodRef.invoke(instance, args...); Методы classа: methodRef.invoke(null, args...);

Если вы определяете метод как статический, вы можете использовать его без создания экземпляра classа, но тогда у вас также нет доступных переменных объекта.

 public class Foo { public static String Bar() { return "bla"; } } 

В этом случае вы можете назвать это с помощью Foo.Bar() .

Из заметок Фреда Сварца (fredosaurus) :

Существует два типа методов.

  • Методы экземпляра связаны с объектом и используют переменные экземпляра этого объекта. Это значение по умолчанию.

  • Статические методы не используют переменные экземпляра любого объекта classа, в котором они определены. Если вы определяете статический метод, вам будет предоставлено грубое сообщение компилятором, если вы попытаетесь получить доступ к любым переменным экземпляра. Вы можете получить доступ к статическим переменным, но за исключением констант, это необычно. Статические методы обычно берут все данные из параметров и вычисляют что-то из этих параметров без ссылки на переменные. Это типично для методов, которые выполняют какой-то общий расчет. Хорошим примером этого являются многие методы полезности в предопределенном classе Math .

Квалификация статического вызова

Извне определяющего classа метод экземпляра вызывается путем префикса его объектом, который затем передается как неявный параметр в метод экземпляра, например, inputTF.setText("");

Статический метод вызывается путем префикса его именем classа, например Math.max(i,j); , Любопытно, что он также может быть квалифицирован с помощью объекта, который будет игнорироваться, но будет использоваться class объекта.

пример

Вот типичный статический метод:

 class MyUtils { . . . //================================================= mean public static double mean(int[] p) { int sum = 0; // sum of all the elements for (int i=0; i 

Единственные данные, которые этот метод использует или изменяет, - это параметры (или, конечно, локальные переменные).

Зачем объявлять метод static

Вышеуказанный метод mean() будет работать так же хорошо, если он не был объявлен static, если он был вызван из одного classа. Если вызывается извне classа и он не был объявлен статическим, он должен быть квалифицирован (бесполезно) с объектом. Даже если они используются в classе, есть веские причины для определения метода как статического, когда это возможно.

  • Документация. Любой, кто видит, что метод статический, будет знать, как его вызвать (см. Ниже). Аналогично, любой программист, смотрящий на код, будет знать, что статический метод не может взаимодействовать с переменными экземпляра, что упрощает чтение и отладку.
  • Эффективность. Компилятор обычно создает несколько более эффективный код, потому что не должен передаваться неявный объектный параметр.

Вызов статических методов

Есть два случая.

Вызывается из одного classа

Просто напишите имя статического метода. Например:

 // Called from inside the MyUtils class double avgAtt = mean(attendance); 

Вызывается извне classа

Если метод (статический или экземпляр) вызывается из другого classа, перед именем метода следует указать что-то, чтобы указать class, в котором этот метод определен. Например, методы, это объект, к которому будет обращаться метод. Для статических методов должно быть указано имя classа. Например:

 // Called from outside the MyUtils class. double avgAtt = MyUtils.mean(attendance); 

Если перед ним задан объект, значение объекта будет игнорироваться и будет использоваться class объекта.

Доступ к статическим переменным

Altho static метод не может получить доступ к переменным экземпляра, он может обращаться к static переменным. Обычным использованием статических переменных является определение «констант». Примерами из библиотеки Java являются Math.PI или Color.RED . Они квалифицируются с именем classа, поэтому вы знаете, что они static . Любой метод, static или нет, может обращаться к static переменным. К переменным экземпляра можно обращаться только методом экземпляра.

Альтернативный звонок

Что немного странно и не рекомендуется, так это то, что объект classа может использоваться вместо имени classа для доступа к статическим методам. Это плохо, потому что создается впечатление, что используются некоторые переменные экземпляра в объекте, но это не так.

Если это статический метод, вы можете вызвать его, используя имя classа вместо объекта.

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

 public class aClass { private SomeOtherClass oc; public class aClass( SomeOtherClass otherClass) { oc = otherClass; } public callOtherClassMethod() { oc.otherClassMethod(); } } 

Сделайте это в этом формате:

classmehodisin.methodname();

Например:

MyClass1.clearscreen();

Надеюсь, это помогло. Примечание: метод должен быть статическим.

Вызов метода

 public class a { void sum(int i,int k) { System.out.println("THe sum of the number="+(i+k)); } } class b { public static void main(String[] args) { a vc=new a(); vc.sum(10 , 20); } } 
  • Обнаружить версию целевой рамок во время компиляции
  • Доступ к методу из других classов objective-C
  • Что такое «статический метод» в C #?
  • Безопасный метод Python для получения значения вложенного словаря
  • Должны ли статические статические методы C #, которые * могут быть статическими?
  • Как передать функцию-член функции указателю на функцию?
  • Синтаксис метода в Objective C
  • Вызывать прямые методы или методы с аргументами / переменными / параметрами в EL
  • Как передать несколько параметров в Objective-C?
  • Как я могу вызвать конкретный метод Java при нажатии / отправке события определенной кнопки в JSP?
  • Как вызвать метод, хранящийся в HashMap? (Java)
  • Interesting Posts
    Давайте будем гением компьютера.