Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Francesco Nigro
    @franz1981
    Bè mi fa strano compili ma non così strano se consideriamo che i generics esistono solo a compile time..hai provato ad abilitare i compiler warns?
    Mi aspetterei che perlomeno qualcosa te la dica
    Felice Pagano
    @felicepagano
    io non riesco a compilarlo quel codice
    Francesco Nigro
    @franz1981
    Ci credo..dovrebbe arrabbiarsi (in teoria)
    Però è anche vero che forse può essere forzato
    credo che Either<X,Y> lo risolva come un Either
    raw type
    Andrea Peruffo
    @andreaTP
    Il compilatore e' felice gli IDE no
    e non riesco veramente a capire

    il pom.xml:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.example</groupId>
      <artifactId>example</artifactId>
      <packaging>jar</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>example</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>io.atlassian.fugue</groupId>
          <artifactId>fugue</artifactId>
          <version>4.7.1</version>
        </dependency>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </project>

    e mvn compile

    Felice Pagano
    @felicepagano
    javac MainFUgue.java -cp ~/.m2/repository/io/atlassian/fugue/fugue/4.7.1/fugue-4.7.1.jar
    MainFUgue.java:23: error: example() in E2 cannot override example() in E1
        public Either<String, Exception> example() {
                                         ^
      return type Either<String,Exception> is not compatible with Either<Exception,String>
    MainFUgue.java:22: error: method does not override or implement a method from a supertype
        @Override
        ^
    MainFUgue.java:24: error: incompatible types: inference variable L has incompatible bounds
            return Either.left(new Exception());
                              ^
        equality constraints: String
        lower bounds: Exception
      where L,R are type-variables:
        L extends Object declared in method <L,R>left(L)
        R extends Object declared in method <L,R>left(L)
    3 errors
    Felice Pagano
    @felicepagano
    credo che dipenda dal fatto che maven, configurato in quel modo, imposti il language level alla versione 5 di default
    Felice Pagano
    @felicepagano
    l’unica discriminante che mi viene in mente è quella. poi perchè java 5 te lo faccia fare non saprei :D. a memoria in java 5 i generics non erano obbligatori, magari per questo motivo è più permissivo
    Andrea Peruffo
    @andreaTP
    @felicepagano ci ho messo un po' ma sono riuscito a replicare il tuo esempio, ma avendo le due classi dichiarate al top level (e.g. in un package in file separati) l'errore non esce
    sembra quindi che non sia mvn che fa qualcosa ....
    Felice Pagano
    @felicepagano
    @andreaTP lanciando maven sempre con un clean prima del compile?
    Alessio Stalla
    @alessiostalla
    @andreaTP sarebbe interessante vedere cosa riporta javap per E1.class e E2.class
    Andrea Peruffo
    @andreaTP
    @felicepagano hai vinto ancora :-) lanciando clean prima del compile l'errore viene riportato correttamente, quindi e' un "bug" nella gestione dell'incremental compiler in Maven
    Io lavoro soprattutto con Scala, davvero non mi aspettavo che la situazione in Maven potesse essere peggiore
    Felice Pagano
    @felicepagano
    nemmeno io che “ci lavoro” :D.
    sarà che lancio sempre il clean prima delle altre fasi però in effetti oggi questa cosa ha sorpreso anche me
    Andrea Peruffo
    @andreaTP
    giusto per completezza javap riporta fedele quanto viene dai file java:
    public class com.example.E2 extends com.example.E1 {
      public com.example.E2();
      public io.atlassian.fugue.Either<java.lang.String, java.lang.Exception> example();
    }
    Felice Pagano
    @felicepagano
    l’esclamazione è stata, ma perchè sta porcata?
    Andrea Peruffo
    @andreaTP
    e' da ieri che provavo a minimizzarlo :-)
    Alessio Stalla
    @alessiostalla
    Beh, se succede con la compilazione incrementale, dubito sia colpa (solo) di Maven. Probabilmente è javac che non controlla i generics tra due diverse compilation unit in certi casi.
    Andrea Peruffo
    @andreaTP
    questo e' possibile, ma davvero ancora la gente lancia sempre clean prima dei task in maven
    soooo 80s
    no dai 90s
    Alessio Stalla
    @alessiostalla
    Io quando faccio una build solitamente do mvn clean install. Ma per l'operatività normale lascio fare all'IDE.
    Felice Pagano
    @felicepagano
    in clean parte quando le cose non vanno e dovrebbero. o in questo caso non dovrebbero e vanno :D
    Andrea Peruffo
    @andreaTP
    :+1:
    Bradipo Developer
    @BradipoDev_twitter
    Per curiosità, come ti è capitato di incorrere in questa situazione? Immagino che il codice con l'errore sia passato per un IDE, che avrebbe dovuto segnalarti lui l'errore
    Andrea Peruffo
    @andreaTP
    un challenge che hanno mandato in ufficio, ho notato l'errore e mi sono incuriosito
    tra l'altro l'autore e` quello che ho chiamato nella room per sbaglio quando abbiamo inaugurato il gitter xD
    Andrea Peruffo
    @andreaTP
    Niente di nuovo...
    Matteo Mortari
    @tarilabs

    Stress da rientro? Ansia da "domani è Lunedì" ? Non disperate, we at JUGMilano got you covered ;) riprendiamo gli appuntamenti e siamo lieti di annunciarvi che il prossimo incontro del JUG Milano si terrà Giovedì 26 Settembre 2019.

    Questo il programma:
    h 19:00 - JUG news e attività in corso
    h 19:10 - "Come e perchè ho trasformato il mio vecchio progetto Java in un componente per un'architettura serverless", a cura di Mario Fusco
    h ~20:30 - Chiusura lavori, estrazione licenza JetBrains/IntelliJ Idea(*) ed eventuali

    Potete trovare maggiori dettagli e registrarvi per l'incontro direttamente sul nostro sito:
    http://www.jugmilano.it/meeting-114.html

    Dopo l'incontro, per chi vorrà, ci mangeremo una pizza condita da chiacchiere tecnologiche.

    Vi aspettiamo!

    • JUG Milano staff
    Antonio Gelameris
    @toniogela_twitter
    @andreaTP adesso che abbiamo sbt 1.3.0 possiamo lanciare il clean compile anche noi in batch mode senza dover tornare la mattina dopo
    scommetto che non vedevi l'ora
    Andrea Peruffo
    @andreaTP
    Già, sono molto contento!
    Antonio Gelameris
    @toniogela_twitter
    Labella ha colpito ancora?
    Andrea Peruffo
    @andreaTP
    Mi sento confuso a leggere le risposte di Martin magari Francesco mi può illuminare
    Marco F.
    @mfirry
    sì anche a me ha confuso sta cosa
    Matteo Mortari
    @tarilabs

    Siamo lieti di annunciarvi che il prossimo incontro del JUG Milano si terrà Giovedì 10 Ottobre 2019.

    Questo il programma:
    h 19:00 - JUG news e attività in corso
    h 19:10 - "Effective Java ≈ Kotlin", a cura di Francesco Vasco
    h ~20:30 - Chiusura lavori, estrazione licenza JetBrains/IntelliJ Idea(*) ed eventuali

    Potete trovare maggiori dettagli e registrarvi per l'incontro direttamente sul nostro sito:
    http://www.jugmilano.it/meeting-115.html

    Francesco Nigro
    @franz1981
    @andreaTP d'accordo con Martin :) ma solo perché effettivamente il modello reattivo rende esplicito ciò che le fiber lascia implicito e a carico dello scheduler (che il dev non dovrebbe neppure vedere), per il fatto di essere componibile non saprei, mi devo leggere meglio in thread
    Edoardo Vacchi
    @evacchi
    non ho capito neanche io la risposta
    forse questo messaggio chiarisce (anche se è di un altro) https://twitter.com/rroeserr/status/1177271649466384384
    Reactive can "disconnect concurrency" bec. its message driven. Reactive is about reliable systems (esp distributed) Its disingenuous to advertise Fibers solving what reactive solves. Revitalize Messaging Passing!