Question: In some programming API's I see a list of methods to call, like getBoolean(String key, getDouble(String key), and getString(String key). Some other API's use a general get(String key) method, and return an Object which you are supposed to cast to an appropriate type yourself.

Now I am writing my own data accessing point, and I am wondering which approach to use. What are the advantages and disadvantages of each approach? When would you choose one over the other?

Answer: 
Advantage: getBoolean(), getDouble(), etc. allow you to return the respective primitive types. As far as I've seen, that's the primary reason anyone writes methods like that.
Two questions:
1) Why don't you use general Properties instead, à là:

```
String getName()
Address getAddress()
Date getDateOfBirth()

```

etc?

2) If you want to use methods like:

```
String getString(String key)
Double getDouble(String key)
Address getAddress(String key)

```

How on earth would I, as the user, know, which key's are associated with objects of type String, which are associated with objects of type Double, etc?

I would recommend going with a solution similar to 1).
If I didn't misunderstand your question, that is.