Create vector of all classes implementing an interface-Collection of common programming errors
Yes, you can do that. Interfaces are meant to be used that way.
Now for suggesting better ways to do that: very difficult to do, as it is not very clear what you need to do exactly. The first suggestion would be to use ArrayList instead of Vector. The main difference between the two is that Vector is “synchronized”, which means thread safe. However, synchronization has a big impact on performance, and the Vector class achieve full thread safety by synchronizing access to ALL its methods. It is generally better to use non-synchronized containers and, if you need thread safety, to manage your own synchronization outside the container, as you can put them only where you need them depending on your usage.
In the extreme case where your list has a fixed size known in advance, you can even use a simple array, i.e.:
Vehicle[] vi = new Vehicle[2];
vi[0] = new Car();
vi[1] = new Bicycle();