Anonimowa klasa wewnętrzna a obiekt

0

W pewnej książce natknęłam się na opis listingu: "Anonimowa klasa wewnętrzna ..." i kod:

 private final TextWatcher amountEditTextWatcher = new TextWatcher() {
     
      @Override
      public void onTextChanged(CharSequence s, int start,
         int before, int count) {

         try {
            billAmount = Double.parseDouble(s.toString()) / 100.0;
            amountTextView.setText(currencyFormat.format(billAmount));
         }
         catch (NumberFormatException e) { 
            amountTextView.setText("");
            billAmount = 0.0;
         }

         calculate();
      }

      @Override
      public void afterTextChanged(Editable s) { }

      @Override
      public void beforeTextChanged(
         CharSequence s, int start, int count, int after) { }
   };
}

A w innych źródłach przeczytałam że wewnętrzna klasa to jak sama nazwa wskazuje klasa w klasie.
Patrząc na ten kod, jakoś nie widzę deklaracji

class

Jest to źle przetłumaczone ? Nie chodziło może o anonimowy wewnątrzklasowy obiekt ?
Czy ja tego po prostu nie rozumiem ?

1

Pamiętam że u mnie w pracy mówiło się "anonimowa klasa" na coś takiego :

a.addListener(new Runnable () {
    @Override
    public void run() {
        // kod
    }
});

Popularne przed javą 8 i lambdami.

Klasa wewnętrzna (inner class) to faktycznie to co mówisz, słowo kluczowe class wewnątrz class.

2

jedno i drugie to klasy wewnętrzne, które mogą być albo nazwane ->słowo kluczowe class, albo anonimowe bez tego słowa jak w przykładzie. Anonimowe klasy wewnętrzne tworzą tylko jeden obiekt (wyrażenie new) np. new Runnable(), new CośTamable () i są wykorzystywane głównie z interfejsami.
W interfejsach nie możemy użyć wyrażenia new tak jak normalnie w klasach np :

Runnable runnable = new Runnable();

ale możemy użyć new z interfejsem wtedy, gdy zaraz po tym jest definicja anonimowej klasy wewnętrznej

Runnable runnable = new Runnable(){

		@Override
		public void run() {
			// .......
			
		}	
	};

od java 8 możemy użyć lambd

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