Instancjonowanie obiektu w metodzie obiektu innej klasy

0
Class obj = Jsoup.connect();

Odnośnie tej llinijki na jakiej zasadzie jest tworzony obiekt z metody innej klasy.

1

Jeżeli Class = jakaś nazwa klasy (bo zakładam, że nie jest tutaj użyta klasa Class z java.lang), to:

  1. Klasa Jsoup posiada statyczną metodę connect(), która gdzieś w środku tworzy/pobiera/cokolwiek i zwraca obiekt klasy lub
  2. Jsoup to obiekt, na którym jest wywoływana metoda connect(), która tak jak powyżej - tworzy/pobiera/cokolwiek i zwraca obiekt klasy.
1

@froggson:

Dla kogo ten wywiad?

Prawdodpobnie w klasie Jsoup jest statyczna metoda connect(). która "coś" zwraca
Tylko tyle da się wyczytać (a i to prawdopodobnie) z tego fragmentu

Odnośnie tej llinijki na jakiej zasadzie jest tworzony obiekt z metody innej klasy.

O ile jest tworzony - bo tego nie wiemy - to ewentualnie byłby tworzony tej metodzie. Potem co najwyżej jest kopiowana referencja do niego.
Z całą pewności nie jest tworzony "z metody". Jest, i to da się powiedzieć z pewnością, pprzypisywana referencja

0
ZrobieDobrze napisał(a):

Prawdodpobnie w klasie Jsoup jest statyczna metoda connect(). która "coś" zwraca
Tylko tyle da się wyczytać (a i to prawdopodobnie) z tego fragmentu

Odnośnie tej llinijki na jakiej zasadzie jest tworzony obiekt z metody innej klasy.

O ile jest tworzony - bo tego nie wiemy - to ewentualnie byłby tworzony tej metodzie. Potem co najwyżej jest kopiowana referencja do niego.
Z całą pewności nie jest tworzony "z metody". Jest, i to da się powiedzieć z pewnością, pprzypisywana referencja

Document document = Jsoup.connect("Adres");

public static Connection connect(String url) {
  return HttpConnection.connect(url);
}

public static Connection connect(URL url) {
  Connection con = new HttpConnection();
  con.url(url);
  return con;
}

Ps. sorrki nowy na forum jestem i tak nie ogarniam zbytnio jeszcze

Powiedz czy dobrze to rozumiem: "Tworzymy obiekt document z klasy Document który przyjmuje wartość z tego wyrażenia Jsoup.connect(String); czyli ta metoda zwraca nam HttpConnection.connect(url) gdzie jest tworzony obiekt con i to wlasnie przyjmuje ten document".

1
froggson napisał(a):

Powiedz czy dobrze to rozumiem: "Tworzymy obiekt document z klasy Document który przyjmuje wartość z tego wyrażenia Jsoup.connect(String); czyli ta metoda zwraca nam HttpConnection.connect(url) gdzie jest tworzony obiekt con i to wlasnie przyjmuje ten document".

Lewa strona podstawienia ma sens: przypisujemy referencje a nie "tworzymy obiekt". Zmienne obiektowe w javie są (aż i tylko). referencjami (wskaznikami) do obeioktów, które są gdzieś (na heapie - stercie).
Inaczej mówiąc zadeklarowanie zmiennej (referencyjnej)
Dokument document
tworzy tylko zmienną (he he) referencyjną - w momencie gdy to zachodzi (wejście wykonania kodu w to miejsce) istnienie obiektu już jest od jakiegoś czasu
Więc dla zmiennych w typie jakiejś klasy, sama znienna to tylko referencja - dla zmiennych typów prostych (prymitywnych . primitive) jak int, double, bool itd, rzeczywiście zmienna jest tak jak się spodziewasz, sama liczbą, wartością logiczną itd ... tak dualizm jest w Javie.

w szczególności:
Document document1 = ....
Document doc2 = document1;

Są dwie referencje wskazujace na ten sam obiekt. Tak jakbyś dwóm ludziom dał karteczkę z adresem (class Address), gdzie mieszkasz (ew jedna skserowała drugiej). Karteczki dwie, ale faktu mieszkania to nie zmienia.

Z profesjonalnym czytaniu tego kodu przeszkadzają mi głęboko odmienne typy, Connection to raczej w rozsądnych warunkach nie będzie nijak kompatybilne z Document - ale to kwestia biblioteki a nie formalności języka. Przeczuwam, przykład się źle skleił z niezależnych fragmentów
Spodziewałbym się błędu ClassCastException albo czegoś podobnego.

0
ZrobieDobrze napisał(a):
froggson napisał(a):

Powiedz czy dobrze to rozumiem: "Tworzymy obiekt document z klasy Document który przyjmuje wartość z tego wyrażenia Jsoup.connect(String); czyli ta metoda zwraca nam HttpConnection.connect(url) gdzie jest tworzony obiekt con i to wlasnie przyjmuje ten document".

Lewa strona podstawienia ma sens: przypisujemy referencje a nie "tworzymy obiekt". Zmienne obiektowe w javie są (aż i tylko). referencjami (wskaznikami) do obeioktów, które są gdzieś (na heapie - stercie).
Inaczej mówiąc zadeklarowanie zmiennej (referencyjnej)
Dokument document
tworzy tylko zmienną (he he) referencyjną - w momencie gdy to zachodzi (wejście wykonania kodu w to miejsce) istnienie obiektu już jest od jakiegoś czasu
Więc dla zmiennych w typie jakiejś klasy, sama znienna to tylko referencja - dla zmiennych typów prostych (prymitywnych . primitive) jak int, double, bool itd, rzeczywiście zmienna jest tak jak się spodziewasz, sama liczbą, wartością logiczną itd ... tak dualizm jest w Javie.

w szczególności:
Document document1 = ....
Document doc2 = document1;

Są dwie referencje wskazujace na ten sam obiekt. Tak jakbyś dwóm ludziom dał karteczkę z adresem (class Address), gdzie mieszkasz (ew jedna skserowała drugiej). Karteczki dwie, ale faktu mieszkania to nie zmienia.

Z profesjonalnym czytaniu tego kodu przeszkadzają mi głęboko odmienne typy, Connection to raczej w rozsądnych warunkach nie będzie nijak kompatybilne z Document - ale to kwestia biblioteki a nie formalności języka. Przeczuwam, przykład się źle skleił z niezależnych fragmentów
Spodziewałbym się błędu ClassCastException albo czegoś podobnego.

Dziekuje bardzo w idealny sposób mi to przedstawiłeś i teraz zrozumiałem wszystko

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.