Based on my understanding, this is how you create your new IntegerArray:
IntegerArray numholder = new IntegerArray(nums);
And you get an error when trying to get the length of nums. But, unless you initialize it somewhere in code which you have not posted, nums never actually gets initialized. When you say
private int[] nums;
java does not actually allocate the memory. It waits until assign the array and give it a length.
nums = new int[10];
So, unless you are doing this somewhere else before you call new IntegerArray(nums);
the memory has not been allocated, and you will get a null pointer every time you try to do something associated with the list.