2015-06-04 5 views
-1

У меня есть конструктор MappaFermi(), который создает объект из класса Settore с атрибутами coordinataX = 10, coordinataY = 8 и settoreNome = Nome.ALIENIJava Получить Конструктор Созданный в другом классе

public class MappaFermi extends Mappa { 
    public MappaFermi() { 
     new Alieni(10,8); 
    } 
} 

Этот класс Settore

public class Settore { 
     private Nome settoreNome; 
     private char letteraX; 
     private final int coordinataX; 
     private final int coordinataY; 

    public Settore (int coordinataX, int coordinataY){ 
     this.coordinataX=coordinataX; 
     this.coordinataY=coordinataY; 
    } 
    public int getX(){ 
     return coordinataX; 
    } 
    public int getY(){ 
     return coordinataY; 
    } 
    public Nome getSettoreNome() { 
     return settoreNome; 
    } 
    public void setSettoreNome(Nome settoreNome) { 
     this.settoreNome = settoreNome; 
    } 

} 

Это перечисление Имя атрибута settoreNome

public enum Nome { 
     SICURO, PERICOLOSO, SCIALUPPA, ALIENI, UMANI 
    } 

Это подкласс ALIENI из класса Settore, который устанавливает settoreNome в Nome.ALIENI

public class Alieni extends Settore { 
    public Alieni(int coordinataX, int coordinataY) { 
     super(coordinataX, coordinataY); 
     setSettoreNome(Nome.ALIENI); 
    } 
} 

Это класс Маппа что суперкласс из MappaFermi, но я не думаю, что он связан с моим вопросом

public class Mappa { 
    private Name mappaName; 
    private final Settore [][] settore; 
    private int Matrice [][]; 
    private static final int X=23; 
    private static final int Y=14; 

    public Mappa(){ 
     settore = new Settore[X][Y]; 
     for (int i=0; i < X; i++){ 
      for (int j=0; j<Y; j++) { 
       settore[i][j] = new Settore (i,j); 
      } 
     } 
    } 

    public Name getMappaName() { 
     return mappaName; 
    } 

    public void setMappaName(Name mappaName) { 
     this.mappaName = mappaName; 
    } 
} 

Хорошо, вот мой вопрос, когда я создаю объект MappaFermi, это создает одновременно объект Settore, что я хочу сделать, это использовать метод getSettoreNome() из класса Settore для этого объекта. Я знаю, что я должен начать с создания локальной переменной mappa = new MappaFermi(), но из этого я не знаю, как получить Settore (10,8) с settoreNome = Nome.ALIENI, который создается в новом MappaFermi().

public class MappaFermiTest { 
    @Test 
    public void testSettoreAlieni(){ 
     Mappa mappa = new MappaFermi(); 
     Settore settore = ??????; 
     assertEquals(Nome.ALIENI, settore.getSettoreNome()); 
    } 
} 
+1

«Хорошо, вот мой вопрос, когда я создаю объект MappaFermi это создает в то же время объект Settore» - да, но тогда это не * сделать * ничего с вновь созданным объектом. Почему он ее создает? Должна ли она быть частью состояния класса? Я подозреваю, что вам нужно поле, а не локальная переменная. Трудно сказать, поскольку вы не объяснили, чего вы действительно пытаетесь достичь. (Здесь также есть * гораздо больше кода, чем вам нужно, чтобы продемонстрировать проблему ...) –

+0

Как лучший пример, попробуйте сохранить свой код на английском языке. Это стандарт. – grozandrei

+0

@JonSkeet Я поместил весь код, потому что в противном случае указано, что чего-то не хватает, я делаю тест, чтобы увидеть, что при запуске MappaFermi() он создает Settore (10,8) с settoreNome = Nome.ALIENI, поэтому Я подумал, что это способ использовать метод getSettoreNome() из Settore (10,8) и сравнивать имя settoreName с Nome.Alieni –

ответ

0

В MappaFermi, вы не хранящего Alieni создан?

public MappaFermi() { 
    new Alieni(10,8); // You are just creating, not assigning to anything 
} 

Так что это не способ для вас, чтобы получить эту Alieni штуковина.

Вы должны объявить его членом MappaFermi и создать функцию получения для его получения.

например.

public class MappaFermi extends Mappa { 

    private Alieni alieni; 

    public MappaFermi() { 
     alieni = new Alieni(10,8); 
    } 

    public Alieni getAlieni() { return alieni; } 
} 
+0

Спасибо за ваше время, у меня вопрос, потому что в фактическом коде MappaFermi() у меня больше объектов для создания класса Settore, поэтому, если после alieni = new Alieni (10,8); я пишу новый Alieni (10,9); когда я хочу вызвать getAlieni(), он вернет последний новый Alieni (10,9), или я могу выбрать, какой объект я хочу вернуть? –

+0

@marcosguerra Это ваш код, поэтому вы можете решить, что хотите вернуть. Это просто вопрос, как вы его пишете. – Gosu