Może głupie pytanie ale nie wiem

0

Daje kod klasy:

import java.util.ArrayList;
import java.util.Iterator;

/**

  • A simple model of an auction.

  • The auction maintains a list of lots of arbitrary length.

  • @Author David J. Barnes and Michael Kolling.

  • @version 2003.10.06
    */
    public class Auction
    {
    // The list of Lots in this auction.
    private ArrayList lots;
    // The number that will be given to the next lot entered
    // into this auction.
    private int nextLotNumber;

    /**

    • Create a new auction.
      */
      public Auction()
      {
      lots = new ArrayList();
      nextLotNumber = 1;

    }
    /**

    • Enter a new lot into the auction.
    • Lots can only by entered into the auction by an
    • Auction object.
    • @param description A description of the lot.
      */
      public void getUnsold()
      {

    }

    public void enterLot(String description)
    {
    lots.add(new Lot(nextLotNumber, description));
    nextLotNumber++;
    }

    /**

    • Show the full list of lots in this auction.
      */
      public void showLots()
      {
      Iterator it = lots.iterator();
      while(it.hasNext()) {
      Lot lot = (Lot) it.next();
      System.out.println(lot.toString());
      }
      }

    /**

    • Bid for a lot.
    • A message indicating whether the bid is successful or not
    • is printed.
    • @param number The lot number being bid for.
    • @param bidder The person bidding for the lot.
    • @param value The value of the bid.
      */
      public void bidFor(int lotNumber, Person bidder, long value)
      {
      Lot selectedLot = getLot(lotNumber);
      if(selectedLot != null) {
      if(selectedLot.bidFor(new Bid(bidder, value))) {
      System.out.println("The bid for lot number " +
      lotNumber + " was successful.");
      }
      else {
      System.out.println("Lot number: " + lotNumber +
      " already has a bid of: " +
      selectedLot.getHighestBid().getValue());
      }
      }
      }

    /**

    • Return the lot with the given number. Return null
    • if a lot with this number does not exist.
    • @param lotNumber The number of the lot to return.
      */
      public Lot getLot(int lotNumber)
      {
      if((lotNumber >= 1) && (lotNumber < nextLotNumber)) {
      // The number seems to be reasonable.
      Lot selectedLot = (Lot) lots.get(lotNumber - 1);
      // Include a confidence check to be sure we have the
      // right lot.
      if(selectedLot.getNumber() != lotNumber) {
      System.out.println("Internal error: " +
      "Wrong lot returned. " +
      "Number: " + lotNumber);
      }
      return selectedLot;
      }
      else {
      System.out.println("Lot number: " + lotNumber +
      " does not exist.");
      return null;
      }
      }
      }
Moje pytanie jest odnośnie metody:

public void showLots()
{
Iterator it = lots.iterator();
while(it.hasNext()) {
Lot lot = (Lot) it.next();
System.out.println(lot.toString());
}

co to jest to "Lot lot = (Lot) " (Lot) - wiem , że to jest casting i pokazanie o który obiekt nam chodzi, ale o co biega z tym Lot lot na początku? Może ktoś ma jakiś artykuł albo zna odpowiedź. Proszę o pomoc i dziękuje za odpowiedź.

0

Lot lot = (Lot) it.next();

Po lewej stronie jest deklaracja zmiennej: typ nazwa.
Jak tego nie wiesz, to na razie zarzuć pisanie programów w Javie.

0

Mam język Java na studiach i niestety korzystamy z książki Objects First With Java Barnes and Kolling. Książka raczej pokazuje przykłady i omawia je ale nie wszystko. Po kilku rozdziałach pojawia się taka deklaracja zmiennej o której nic nie było wspomniane wcześniej, ani nie była użyta w żadnym z wcześniejszych ćwiczeń, dlatego pytałem. Programów jeszcze nie piszę :), bdw dzięki za odpowiedzieć.

0

a takie cos juz widziałeś: int i = 3 ?

to jest prawie że to samo:

Lot i = (Lot) it.next();

0

Zgadzam się z Tobą i jest to całkiem logiczne z definicją deklaracji zmiennej jako typ zmiennej + nazwa zmiennej, aczkolwiek ani w książce, ani we wcześniejszych przykładach, które analizowaliśmy nie było informacji, że można zdeklarować zmienną przy użyciu nazwy klasy (czyli w sumie obiektu tej klasy) jako typu zmiennej mimo, że jak widzę to fundamenty języka. Deklaracja int abc = ... albo String abc = "..." jest oczywista i takich przykładów mnóstwo było, a w tym przypadku po prostu spytałem bo autor nagle zmienia konwencje i hm... stanąłem w miejscu żeby to zrozumieć. W Thinking in Java jak dzisiaj przeczytałem jest to wszystko wyjaśnione ale szukanie info w sieci czy w książkach jest czasochłonne, a tutaj dostałem szybko odpowiedź. Dziękuje jeszcze raz.
PS: Odnośnie użytych sformułowań proszę się nie czepiać bo dopiero zaczynam przygodę z Javą także jeszcze się nie orientuje. Pozdro.

0
Anzelm napisał(a)

Deklaracja int abc = ... albo String abc = "..." jest oczywista

Wcale nie.
Ta pierwsza tworzy zmienną abc typu int, a ta druga tworzy referencję do obiektu klasy String.

Może łatwiej będzie Ci zrozumieć jeżeli powiem, że w Javie konstrukcja A B = C;
oznacza, że tworzysz zmienną B, której typem jest referencja do klasy A (lub jej pochodnej) i przypisujesz jej referencję obiektu C.

Jest od tego ten jeden wyjątek - że jeżeli A jest typem prostym (nieobiektowym) takim jak int, char, double, to typem zmiennej B zamiast referencji do A jest zmienna tego właśnie typu A, której przypisuje się wartość C.

W przypadku String literał "..." reprezentuje referencję do obiektu String przechowującego ten właśnie ciąg znaków. Tak więc to typy proste są w Javie wyjątkiem, a nie obiekty.

Literówka poprawiona :-)

0
Olamagato napisał(a)

Jest ot tego ten jeden wyjątek

:| :-/ :-O

1 użytkowników online, w tym zalogowanych: 0, gości: 1