Есть ли способ принять тип в качестве параметра для метода stati c в Java следующим образом? - PullRequest
0 голосов
/ 10 марта 2020

Моя главная цель - добиться следующего синтаксиса при вызове метода stati c с помощью any означает.

MyClass.staticMethod<Type>();

Это то, чего я достиг до сих пор,

static <T> void MyClass()
{
/* Function Body */
}

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Если у вас есть универсальный c класс, такой как

public class MyClass<T> {
    public MyClass() {
    }
}

, который обычно создается с использованием new

new MyClass<Type>()

, но вы не хотите, чтобы вызывающий использовал new, вы хотите, чтобы метод static сделал это, а затем сделайте это так:

public class MyClass<T> {
    public static <T> MyClass<T> newInstance() {
        return new MyClass<T>();
    }
    private MyClass() {
    }
}

Теперь вызывающая сторона может сделать:

MyClass.<Type>newInstance()

, хотя Type может как правило, вывод :

MyClass<Type> myObj = MyClass.newInstance();
1 голос
/ 10 марта 2020

Я думаю, вы имели в виду

MyClass.<Type>staticMethod();
static <T> void staticMethod() {
    // Function Body
}

Вы можете написать это, но метод не будет знать, что такое T из-за стирания типа.

Если метод должен знать T, тогда вам нужно

MyClass.staticMethod(Type.class);
static <T> void staticMethod(Class<T> clazz) {
    // Function Body
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...