Null pointer where there should not be one...at all

I have a null pointer error happening on this section of code


	public static Tile getTileByID(int i) {
		for (Tile t : tiles) {
			if ((byte) i == t.getID()) {
				return t;
			}
		}
		return Tile.VOID;
	}

//this is the problem line 
if ((byte) i == t.getID()) {

At first i thought it could be due to some data being over writen due to synchronization issues but this is not the case since i have a read right lock on both threads… any ideas?

Ohh and ‘Tiles’ never gets any new data written to it since its just a list of tiles creates on startup