[slf4j-dev] [JIRA] (SLF4J-485) LoggingEventBuilder addArgument() should take Supplier<?>, not Supplier<Object>

QOS.CH (JIRA) noreply-jira at qos.ch
Sun Mar 1 21:54:00 CET 2020


Christoffer Hammarström created SLF4J-485:
---------------------------------------------

             Summary: LoggingEventBuilder addArgument() should take Supplier<?>, not Supplier<Object>
                 Key: SLF4J-485
                 URL: https://jira.qos.ch/browse/SLF4J-485
             Project: SLF4J
          Issue Type: Bug
          Components: Core API
    Affects Versions: 2.0.0-alpha1
            Reporter: Christoffer Hammarström
            Assignee: SLF4J developers list


`addArgument(Supplier<Object>)` prevents passing in any `Supplier<? extends Object>`.

Try the following JUnit 4 test:


{noformat}
import java.util.function.Supplier;
import org.junit.Test;

public class GenericsTest {

    @Test
    public void testObjectSupplier() {
        Supplier<Object> objectSupplier = () -> "Object";
        Supplier<String> stringSupplier = () -> "String";

        object(objectSupplier);
        //object(stringSupplier); // Uncommenting leads to compile failure

        //string(objectSupplier); // Uncommenting leads to compile failure
        string(stringSupplier);

        extendsObject(objectSupplier); // Works fine
        extendsObject(stringSupplier); // Works fine
    }

    private void object(Supplier<Object> objectSupplier) {
        System.out.println("object: "+objectSupplier.get());
    }

    private void string(Supplier<String> stringSupplier) {
        System.out.println("string: "+stringSupplier.get());
    }

    private void extendsObject(Supplier<?> extendsObjectSupplier) {
        System.out.println("extends object: "+extendsObjectSupplier.get());
    }
}
{noformat}



--
This message was sent by Atlassian JIRA
(v7.3.1#73012)


More information about the slf4j-dev mailing list