Java: доступ к атрибуту в классе, который также является объектом того же класса

#java #class #oop #reference

#java #класс #ооп #ссылка

Вопрос:

Я изучаю как начинающий ООП на языке Java и обнаружил, что застрял при попытке выполнить определенную задачу. Прямо сейчас я пытаюсь решить проблему, когда у меня есть класс A, который имеет 2 атрибута, один из которых — объект того же типа A и список с объектами типа B, этот тип B имеет только один атрибут и его значение int.

 Class B{
   int number;
}

Class A{
    A next;
    List<B> objects;    
{
 

Часть проблемы, с которой я сталкиваюсь, заключается в том, чтобы «Создать метод в классе A, который вернет объект B с наименьшим номером в текущем экземпляре класса A и его преемников (A next). Я не пытаюсь найти код, а способ перемещения между текущим экземпляром класса, в котором я нахожусь (ссылка на класс A), и его прямыми ссылками (следующий). Я задаю этот вопрос здесь, потому что я не смог найти подобный вопрос в своих поисках.

Комментарии:

1. из метода внутри класса A вы получаете доступ к объектам next с this.next.objects помощью (при условии, что поля не являются частными).

Ответ №1:

Я обновил класс следующим кодом

 import java.util.*;
public class A {
    List<B> obj1;
    A next;
    A(A a,List<B> o){
        next = a;
        obj1 = o;
    }
    
    
    
    public void  lowestNumber()
    {
        List<B> objects = new ArrayList<B>();
        int i = obj1.get(0).number;
        System.out.println(" A next object size of list b is " next.obj1.size());
        for(B ob: obj1)
        {
            if(ob.number < i)
            {
                i = ob.number;
                objects.add(ob);
            }
        }
        
        if(objects.size() != 0)
        {
            int j = objects.size() - 1;
            System.out.println(" B object lowest number is " objects.get(j).number);
        }
        else {
            System.out.println(" B object lowest number is  " objects.get(0).number);
        }
        
    }
}
 

и для выполнения этого для метода main я создал отдельный класс C.java
следующий код выглядит следующим образом

 import java.util.*;
public class C {
    public static void main(String[] args) 
    {
    List<B> y = new ArrayList<B>();
    List<B> u = new ArrayList<B>();
    
       
    
    B y1 = new B();
    y1.number = 3;
    B y2 = new B();
    y2.number = 4;
    B y3 = new B();
    y3.number = 1;
    B y4 = new B();
    y4.number = 2;
    y.add(y1);
    y.add(y2);
        y.add(y3);
        u.add(y4);
       u.add(y3);
        A n2 = new A(null, u);
        A n1 = new A(n2, y); 
        n1.lowestNumber();

    }
}
 

Результат — это

  A next object size of list b is 2
 B object lowest number is 1