2013-10-26 3 views
0

У меня есть некоторые final static Road «s заявил так:Как получить имя поля переменной?

public static final Road street = new Road().setWidth(20).setRoadColour(0xAAAAAA).setRoadLengths(500, 100).setDiversity(0); 
public static final Road junction = new Road().setWidth(60).setRoadColour(0x999999).setCustomGenerator(new JunctionGenerator()); 
public static final Road normalRoad = new Road().setWidth(30).setRoadColour(0x999999).setRoadLengths(1000, 2000).setDiversity(2).setChanceForTurn(0).setRoadChance(street, 1); 
public static final Road motorway = new Road().setWidth(60).setRoadColour(0x0000FF).setRoadLengths(1000, 100000).setDiversity(1).setChanceForTurn(0).setRoadChance(normalRoad, 1); 

И я хочу, чтобы иметь возможность получать имя пути по его экземпляр, EG-

Я думал, метод будет что-то в этом направлении

Road.street.getClass().fieldName(); 

И это вернет имя поля, в котором я его объявил.

+2

Использовать перечисление или наследование – siledh

+0

Вы считаете, что дороги будут работать лучше, чем Enums? Я дам этот выстрел. Сначала это не происходило. –

+0

Если у вас есть только четыре типа с очень похожими свойствами, просто различие по числам, то да – siledh

ответ

3

Дайте Road -класс private String roadname и геттер, это будет обычный способ сделать это.

+0

Это была моя первоначальная идея, я просто подумал, что посмотрю, есть ли способ получить имя поля. На данный момент этого достаточно. Благодарю. –

+1

Согласен. В соответствии с этим (http://stackoverflow.com/questions/744226/java-reflection-how-to-get-the-name-of-a-variable) получение имени переменной экземпляра класса невозможно в Java , –

+0

Jet на обычное OO-приложение не должно использовать отражение, на мой взгляд. – Alexander

Смежные вопросы