Új hozzászólás Aktív témák

  • Drizzt

    nagyúr

    válasz Lortech #10212 üzenetére

    Miért nem simán T a paraméter az első add függvényedben, az interface-ben? Ha azt csinálod, akkor azzal meg tudod akadályozni, hogy a "impl1.add(impraw);" illetve a "impl2.add(impraw);" leforduljon. Persze az impraw.add fogad mindenféle típusú interface-et. Aztán ha type mismatch van, akkor futási időben száll el a
    paramEnforcerMatrix.add(paramEnforcerVector); sor.

    public interface ParamEnforcer<T extends ParamEnforcer<T>> {

    void add(T other);

    }

    class MatrixType implements ParamEnforcer<MatrixType> {

    @Override
    public void add(MatrixType other) {

    }
    }

    class VectorType implements ParamEnforcer<VectorType> {
    @Override
    public void add(VectorType other) {

    }
    }

    class Tester {
    void test() {
    MatrixType matrixType = new MatrixType();
    ParamEnforcer paramEnforcerMatrix = matrixType;

    VectorType vectorType = new VectorType();
    ParamEnforcer paramEnforcerVector = vectorType;

    matrixType.add(matrixType);
    vectorType.add(vectorType);
    paramEnforcerMatrix.add(paramEnforcerVector);

    }
    }

Új hozzászólás Aktív témák