Java warning when calling DBusConnection.addSigHander in Java binding

Matthew Johnson dbus at matthew.ath.cx
Thu Apr 27 01:27:09 PDT 2006


On Wed, 26 Apr 2006, Tim Moloney wrote:

> Matthew Johnson wrote:
>> On Tue, 25 Apr 2006, Tim Moloney wrote:
>> 
>>> I get a couple of warnings when compiling the following line of Java code 
>>> inside Eclipse.
>>> 
>>> this.connection.addSigHandler(Player.playingUriChanged.class, this);
>>> 
>>> The warnings are:
>>> - Type safety: The expression of type RhythmboxDbusProxy needs unchecked 
>>> conversion to conform to DBusSigHandler<T>
>>> - Type safety: Unchecked invocation addSigHandler(Class, DBusSigHandler) 
>>> of the generic method addSigHandler(Class<T>, DBusSigHandler<T>) of type 
>>> DBusConnection
>>> 
>
> The orignal line was
>
> public class RhythmboxDbusProxy implements DBusSigHandler { ... }
>
> which I changed to
>
> public class RhythmboxDbusProxy implements 
> DBusSigHandler<Player.playingUriChanged> { ... }
>
> and that gets rid of the warning.
>
> However, I has to comment out the other three signals that RhythmboxDbusProxy 
> handles.  If I used
>
> public class RhythmboxDbusProxy implements 
> DBusSigHandler<Player.playingChanged>,
> DBusSignHandler<Player.playingUriChanged>, 
> DBusSigHandler<Player.elapsedChanged>,
> DBusSigHandler<Shell.visibilityChanged> { ... }
>
> I get the following error messages.
>
> The interface DBusSigHandler cannot be implemented more than once with 
> different arguments:
>
> I understand this to mean that I have to create a separate class that 
> implements DBusSignal<signal> for each D-Bus signal that I want to handle. 
> That seems a bit much.  I hope that I'm wrong.
>
Hmm. Generics isn't working exactly as I'd have hoped. I'd like people
to be able to have the type safety  there, this may mean living with the
unchecked warning when they don't want it though.

Even casting the signal to Class<? extends DBusSignal> doesn't help. The
type parameterization of addSigHandler does stop you handling something
with the wrong handler, so I don't really want to remove it, but if you
use a generic handler you get this warning. I'm not really sure what to
do about it.

Matt

-- 
Matthew Johnson
http://www.matthew.ath.cx/


More information about the dbus mailing list