LINUX.ORG.RU

История изменений

Исправление system-root, (текущая версия) :

полезно абстрагироваться от субъективного

И понять, что в первую очередь Rectangle и Square не реальные геометрические фигуры а куски кода
Они представляют эти фигуры, а не разделяют отношение между этими фигурами в реальном мире
Вот пример от Роберта Мартина

import java.util.ArrayList;
import java.util.List;

public class Main {

    private class Rectangle { }
    private class Square extends Rectangle { }

    void g() {
        List<Square> squares = new ArrayList<Square>();
        f(squares);
    }

    void f(List<Rectangle> l) {
        l.add(new Rectangle());
    }

    public static void main(String[] args) {
        new Main().g();
    }
}
Error:(11, 11) java: incompatible types: java.util.List<Main.Square> cannot be converted to java.util.List<Main.Rectangle>

Исходная версия system-root, :

полезно абстрагироваться от субъективного

И понять, что в первую очередь Rectangle и Square не реальные геометрические фигуры а куски кода
Они представляют эти фигуры, а не разделяют отношение между этими фигурами в реальном мире
Вот пример от Роберта Мартина

import java.util.ArrayList;
import java.util.List;

public class Main {

    private class Rectangle { }
    private class Square extends Rectangle { }

    void g() {
        List<Square> squares = new ArrayList<Square>();
        f(squares);
    }

    void  f(List<Rectangle> l) {
        l.add(new Rectangle());
    }

    public static void main(String[] args) {
        new Main().g();
    }
}