Hi there.

Imagine I have a data interface like this:
public interface ImportantData<E> {
	public void addObserver(DataObserver<E> obs);
	public void removeObserver(DataObserver<E> obs);

And then I have some class that is listening to changes in my data:
public class DataChangeSignal {
	private DataObserver<?> dataObs;
	private ImportantData<?> currentData;
	public DataChangeSignal() {
		dataObs = new DataObserver<Object>() {
			public void dataChanged(Object data) {
	public void setData(ImportantData<?> data) {
		if (currentData != null) {
		currentData = data;
		if (currentData != null) {
	public void sendSignal() {
		// do stuff

As you can see, I dont care what the generic type parameter of my data object is. I just want to send the same kind of signal in any case.
The code does not compile. I can not add or remove my observers to my data because of a mismatch.

What should I do?
It does not make sense to make my DataChangeSignal a generic class. Its supposed to work with different kinds of data throughout.
Does anybody have a good advice?

Thanks in advance.