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

Аватар пользователя Иван Полежаев
Иван Полежаев
12 апреля 2023

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

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();
    }
}

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


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

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

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

1 0
Аватар пользователя user-0504fb158d641f2c
user-0504fb158d641f2c
25 сентября 2024

int result = MathUtils.<Double>sum(3.5, 2.5); // 6.0 Возвращаемое значение типа int это опечатка или что? мы же сумму двух double возвращем? причем мы указываем тип обертку Double вместо double. так что же здесь делает тип возвращаемого значения int? Это опечатка или в этом есть какой то тайный смысл? Объяснмте пожалуйста.

0 0

Есть что добавить? Зарегистрируйтесь

или войдите в аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Курсы по программированию в Хекслете

Программирование

Веб-разработка

Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков

Frontend-разработка

Разработка внешнего интерфейса сайтов и веб-приложений и верстка

Создание сайтов

Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails

Backend-разработка

Разработка серверной части сайтов и веб-приложений

Тестирование

Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP

Аналитика данных

Сбор, анализ и интерпретация данных на Python

Интенсивные курсы

Интенсивное обучение для продолжающих

DevOps

Автоматизация настройки локального окружения и серверов, развертывания и деплоя

Математика для программистов

Обучение разделам математики, которые будут полезны при изучении программирования

Тест-драйв

JavaScript

Разработка сайтов и веб-приложений и автоматизированное тестирование на JS

Python

Веб-разработка, автоматическое тестирование и аналитика данных на Python

Java

Веб-разработка и автоматическое тестирование на Java

PHP

Веб-разработка и автоматическое тестирование на PHP

Ruby

Разработка сайтов и веб-приложений на Ruby on Rails

Go

Курсы по веб-разработке на языке Go

HTML

Современная верстка с помощью HTML и CSS

SQL

Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД

Git

Система управления версиями Git, регулярные выражения и основы командой строки

Бесплатные курсы

Бесплатные курсы по тестированию, дата-аналитике, верстке, программированию на Python, Java, PHP и JavaScript.