LocksImpl.java

package net.dapete.locks;

import java.util.concurrent.locks.Lock;
import java.util.function.Supplier;

class LocksImpl<K, L extends Lock> extends AbstractLocks<K, L> implements Locks<K, L> {

    LocksImpl(Supplier<L> lockSupplier) {
        super(lockSupplier);
    }

    @Override
    public final L lock(K key) {
        final var lock = get(key);
        lock.lock();
        return lock;
    }

}