2016-03-26 3 views
0

Прямо сейчас, что я делаю это:Можете ли вы получить список вложенных классов без использования отражения в java?

public class Values { 
    List<Line> _lines = new ArrayList<>(); 


    public class Line { 

     public Line() { 
      Values.this._lines.add(this): 
     } 

     public Values get_parent() { 
      return Values.this; 
     } 
    } 
} 

Это означает, что, когда у меня есть линия, которую я могу получить класс Values ​​он принадлежит, и когда у меня есть значения при обращении к переменному _lines экземпляра я могу получить список всех строк, принадлежащих объекту Values.

Это прекрасно работает, и у меня нет проблем с этим, но я знаю, есть ли способ получить все экземпляры Line, созданные под каждым классом значений без использования отражения?

В качестве побочной заметки я просто говорю без размышлений, потому что в прежние времена мы всегда избегали отражения, потому что это было слишком интенсивно на процессоре, возможно, это изменилось, я все еще недоверяю размышлениям и стараюсь избегать этого когда это возможно

заранее спасибо за любую помощь вы можете предоставить

Edit: может быть, я объяснил неправильно, что я хотел сделать, я прошу прощения за то, что, вот что я просил

Вышеупомянутые код - это то, что я использую сейчас, то, что я хочу использовать, это примерно так:

public class Values { 
    public class Line { 
    } 
} 

так что, предположив вышеприведенный сценарий, есть ли способ сделать это без отражения?

Values v = new Values(); 
Line l1 = v.new Line(); 
Line l2 = v.new Line(); 
List<Line> = some magical way to retrieve all lines from v; 

Я извиняюсь за сумбур

+1

Вы не используете отражение в этом примере, знаете ли вы это? – AdamSkywalker

+3

Непонятно, о чем вы спрашиваете, у вас уже есть все экземпляры Line, созданных для значений без отражения. – AdamSkywalker

+0

Любопытно - * недоверенное отражение *, заявляя, что вы не доверяете компилятору. Зачем? – t0mm13b

ответ

0

Ваш _lines переменная имеет модификатор доступа по умолчанию, который meants это пакет частных docs.

Так что ответ зависит. Если класс, получающий доступ к переменной, относится к одному и тому же пакету, тогда вам не нужно отражать. Если это не так, то это то, что вы хотите.

+0

Извините, я думаю, что я написал это неправильно, пример, который я показал, это то, что я сейчас делаю, что я спросил, есть ли способ сделать что-то вроде: a = new Values ​​(); а затем скажите что-то вроде a.get_lines(), но представьте, что вы не используете переменную _lines в классе Values, я надеюсь, что правильно ее объяснил – Cruces