Вот простой пример:Java Generics - когда требуется параметризация?
class World<S extends Sprites, B extends Bodies> {
// Both of these have a problem...
static World world = null; // "World is a raw type. References to generic type
// World<BOD,SPRT> should be parameterized"
static World<S, B> world = null; // "Cannot make a static reference to the non-static type S
// "Cannot make a static reference to the non-static type B
// The following is allowed but looks ugly/fishy to me
static World<?, ?> world = null; //
В случае, если вы задаетесь вопросом, я пытаюсь получить одноплодной шаблон собирается. Задача состоит в том, что этот класс расширен в отдельном пакете GAME, и я не могу иметь этот пакет (МОДЕЛЬ), зависящий от этой ИГРЫ. Поэтому конструктор должен быть МОДЕЛЬ. Таким образом, было бы хорошо, если бы Constructor сохранил одноэлементный объект в статической переменной этого класса в MODEL.
Является ли static World<?, ?> world = null;
действительно уродливым, на ваш взгляд, и есть ли лучший способ приблизиться к этому? Благодаря!
Помните, что Java имеет стирание типа; будет только одна статическая переменная 'world', независимо от того, сколько различных способов вы создаете класс' World' (поскольку все они имеют один и тот же класс, что и среда выполнения). –
Я бы не сделал World singleton/static в первую очередь. Что происходит, когда вы пишете другую ИГРУ, где существуют два мира? В любом случае, мне кажется, что все, что находится в вашем пакете 'GAME', чтобы убедиться, что _it_ создает только один« Мир ». Это теперь отвечает на ваш вопрос, вместо этого он избегает вопроса. –
Хорошие баллы ... На самом деле мой пакет GAME реализует обычный синглтон, чтобы убедиться, что есть только один ... – pitosalas