Как параметризовать статический метод java
Перейти к содержимому

Как параметризовать статический метод java

  • автор:

Статические методы

Статические методы можно вызывать не используя ссылку на объект. В этом их ключевое отличие от обычных методов класса. Для объявления таких методов используется ключевое слово static . На методы, объявленные как static , накладывается следующие ограничения:

  • Они могут непосредственно вызывать только другие статические методы.
  • Им непосредственно доступны только статические переменные.
  • Они не могут делать ссылки типа this или super .

Пример использования статических методов:

public class StaticMethodClass < static int staticVar = 3; int nonStaticVar; public void nonStaticMethod() < System.out.println("Нестатический метод"); >static void staticMethod(int localVar) < System.out.println("localVar = " + localVar); System.out.println("staticVar = " + staticVar); //Нельзя обратиться к нестатической переменной из статического метода //System.out.println("nonStaticVar language-java">public class StaticMethodDemo < public static void main(String[] args) < StaticMethodClass.staticMethod(42); >>
  • Статические переменные
  • Статический блок
  • Java static import
  • Задания

Trustpilot
Комментарии

Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.

Статический метод в обобщённом классе Java: решение ошибок

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

Понимаем законы "наследственности": параметры типов и статический контекст

В Java типовые параметры обычно связаны с экземплярами класса. Поэтому вполне логично спросить: как дела обстоят со статическими методами? Ведь они не могут использовать типовой параметр T класса. И в таких ситуациях Java напоминает нам, что статическая ссылка на нестатический тип T не допустима.

Для решения этой проблемы нужно объявлять типовые параметры прямо в статических обобщенных методах, наделяя каждый из них своей неповторимой "ДНК".

Параметризация метода

В том же туториале утверждается, что компилятор распознаёт тип и т.д. Значит на этапе компиляции уже кое-что известно.

2) Вопрос не понятен. Что значит "отдельно параметризовать"? Вроде в том же файле с исходным кодом класса все делается? Т.е. ничего особливого для статических методов нет.

Вверху был статический, тут напишем не статический. Всё одинаково:

public void fromArrayToCollection(T[] a, Collection c) < for (T o : a) < c.add(o); // Correct >> 

Как параметризировать статический метод java

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

public class MathUtils  public static int sum(int a, int b)  return a + b; > > 

Вы можете параметризовать этот метод, передав ему в качестве аргументов два объекта типа T , где T - это обобщенный тип, как показано в следующем примере:

public class MathUtils  public static T extends Number> double sum(T a, T b)  return a.doubleValue() + b.doubleValue(); > > 

В этом примере мы использовали обобщенный тип для параметризации метода sum() . Здесь мы ограничиваем тип T , чтобы он был типом Number или его подклассом, и таким образом мы можем использовать метод doubleValue() для преобразования значения объектов типа T в тип double

Таким образом, мы можем вызвать параметризованный статический метод sum() следующим образом:

int result = MathUtils.Double>sum(3.5, 2.5); // 6.0 

Здесь мы явно указываем, что тип T является типом Double

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *