Q:

Best practice: family of classes with various type of configuration class

I am defining a family of classes used to get data from different sources (from example, a class will get data from a database, another one from a file, etc.)
Since the data sources are so different, there is no common interface for their configurations.
They all share a common method getData() though.
The idea was to define a set of predefined configurations (most of the time, the configurations used will just depend on a locale, thus there would one configuration for usa, one for france, etc.).
I have create the interface:
public interface IDataSource {
    public void initialize(Object config);
    public List<String> getData();
}

And the class DataSourceA:
public class DataSourceA implements IDataSource {
    public void initialize(Object config) {
        DataSourceAConfig configA = (DataSourceAConfig) config;
        initializeA(configA);
    }

    public List<String> getData() {
        ...
    }

    private void initializeA(DataSourceAConfig config) {
        ...
    }
}

and DataSourceB:
public class DataSourceB implements IDataSource {
    public void initialize(Object config) {
        DataSourceBConfig configB = (DataSourceBConfig) config;
        initializeB(configB);
    }

    public List<String> getData() {
        ...
    }

    private void initializeA(DataSourceBConfig config) {
        ...
    }
}

I am not happy with that solution (for example, using initialize(Object config), then cast the config). I am looking for advice on how to rethink the problem.
Edit:
I generated the configuration implementations using jaxb. Then the user would have to pass the type of data source and the name of the configuration file to the data source factory to get the data source.

A:

Make an interface(abstract class) like DataSourceConfig. DataSourceAConfig and DataSourceBConfig will implement(extend) it. In your initialize method, you can replace Object with DataSourceConfig.
If your datasources are so different, you should change the IDataSource too:
public interface IDataSource<T extends DataSourceConfig> {
    public void initialize(T config);
    public List<String> getData();
}

DataSourceConfig will be the common interface and DataSourceB will implement IDataSource like this:
public class DataSourceB implements IDataSource<DataSourceBConfig> {
    public void initialize(DataSourceBConfig config) {
        initializeB(config);
    }
    // everything else omitted for simplicity
}

