я создаю универсальный метод без параметров, некоторые вещи, как:Общий метод без параметров
private <T> TableCell<T> createTableCell(){
return new TableCell<T>();
}
Так, в моей программе, как назвать этот метод для конкретного типа?
я создаю универсальный метод без параметров, некоторые вещи, как:Общий метод без параметров
private <T> TableCell<T> createTableCell(){
return new TableCell<T>();
}
Так, в моей программе, как назвать этот метод для конкретного типа?
Обычно тип выводится, но вы можете указать тип с этим синтаксисом:
Примечание: У вас ошибка в определении вашего метода - он не имел никакого возвращаемого типа:
private <T> TableCell<T> createTableCell(){
return new TableCell<T>();
}
Вот как можно назвать:
TableCell<SomeType> tableCell = myObject.<SomeType>createTableCell();
Если метод не имеет доступа ни одного поля, считают что делает его static
метамфетамин О.Д., который вы могли бы назвать как:
TableCell<SomeType> tableCell = MyClass.<SomeType>createTableCell();
Как и в стороне, когда вы используете этот синтаксис, многие удивятся вашей «элитность» - это синтаксис не часто видел.
да, твой прав. Это моя ошибка. Как бы то ни было, общий метод находится в не-generic классе, и я хочу, чтобы другой метод этого класса вызывал этот общий класс, а не метод другого класса. – Thinhbk
Да. Я также опубликовал правильный ответ. (Другой ответ был отредактирован после публикации моего сообщения - я думаю, он скопировал мой). нм. – Bohemian
Спасибо за ваше объяснение, это помогает мне понять яснее, поскольку синтаксис в определении универсального класса против общего метода заставляет меня запутаться. – Thinhbk
Вы бы назвали этот метод так же, как вы его назвали конструктором внутри него: createTableCell<TypeName>()
.
К сожалению, он не работает. – Thinhbk
Хм, в этом случае вам придется расширить подпись метода, чтобы включить подсказку типа. Обычный способ сделать это, если у вас действительно нет ничего важного для передачи в метод, является параметр 'Class
Поскольку тип не может быть выведен из контекста (при вызове методы), вы должны указать его при вызове в на следующих путях:
obj.<MyType>createTableCell()
где obj
является объектом класса/типа который содержит этот метод.
Фактически синтаксис равен 'obj.
@missingfaktor да. Благодарю. Я на самом деле пытался это в то же время, потому что я всегда забыл синтаксис в этом случае ... вы были быстрее, чем я. –
@missingfaktor: вы правы. Большое спасибо. – Thinhbk
как только вы назовете этот метод, он вернет TableCell типа T, т. Е. T держит тип класса –
Вы имели в виду «return» вместо «Return»? –
Как правило, когда я вызываю этот метод, он возвращает TableCell