0

I'm facing a very strange error dealing with Strings in one of my Scala application which I cannot reason about! What I have is an Observer that looks like this:

class MqttObserver[String] extends Observer[String] {

  private val logger = Logger.of[MqttObserver[String]]

  override def onNext(elem: String): Future[Ack] = {
    logger.info(s"Got a message from Mqtt broker $elem")
    Continue
  }

  override def onError(ex: Throwable): Unit = {
    logger.error(s"Stream error happened ${ex.getMessage}")
  }

  override def onComplete(): Unit = {
    logger.info(s"Stream ended")
  }
}

I'm then calling the onNext(elem: String) from the

Here is the error:

[error]  found   : java.lang.String
[error]  required: String(in class MqttObservable)
[error]       mqttObserver.onNext(message.getPayload.toString)

This is how I make the call!

  val callback: MqttCallback = new MqttCallback {
    override def connectionLost(cause: Throwable): Unit = {
      logger.info(cause)
    }
    override def deliveryComplete(token: IMqttDeliveryToken): Unit = {

    }
    override def messageArrived(topic: Predef.String, message: MqttMessage): Unit = {
      mqttObserver.onNext(message.getPayload.toString) // FAILS HERE!!!!
      logger.info("Using Default Console Callback --> Receiving Data, Topic : %s, Message : %s".format(topic, message))
    }
  }
joesan
  • 13,963
  • 27
  • 95
  • 232
  • 2
    https://stackoverflow.com/questions/10178377/java-generics-the-type-parameter-string-is-hiding-the-type-string https://stackoverflow.com/questions/32820133/the-type-parameter-g-is-hiding-the-type-g – Dmytro Mitin Jun 14 '19 at 12:41
  • 2
    And what is `mqttObserver` then? How did you instantiate it? I'd prefer not to reopen it only so it can be re-closed for lacking an [mcve]. – Andrey Tyukin Jun 14 '19 at 12:49

1 Answers1

3

Replace

class MqttObserver[String] extends Observer[String]

with

class MqttObserver[S] extends Observer[S]

Otherwise type parameter String hides standard type java.lang.String.

Dmytro Mitin
  • 48,194
  • 3
  • 28
  • 66