Method has same erasure: How should I go about refactoring?
I strongly suspect that you have the wrong problem -- this feels like UtilClass.getNextAvailableNumberAsInteger is implemented incorrectly.  It's also not clear why you want to use the same method name when the argument has a completely different meaning.

That said... my recommendation would be to create a new function object.

class NumberGenerator {
    private List&lt;MyObject&gt; objects = null;
    private List&lt;String&gt; unavailableNumbers = null ;

    public NumberGenerator withObjects(List&lt;MyObject&gt; objects) {
        this.objects = objects;
        return this;
    }

    public NumberGenerator withUnavailableNumbers(List&lt;String&gt; unavailableNumbers) {
        this.unavailableNumbers = unavailableNumbers;
        return this;
    }

    public int getNext() {
        return UtilClass.getNextAvailableNumberAsInteger(objects, unavailableNumbers);
    }

    // OPTIONAL
    public static NumberGenerator newInstance () {
        return new NumberGenerator();
    }
}


Then your clients can use the NumberGenerator to get what they need, without having to worry about the details

int nextNumber = NumberGenerator.newInstance().withUnableNumbers(otherNumbers).getNext();


Other comments: it looks really odd that your "other unavailable numbers" are stored in a collection of String.  It looks somewhat odd that you are using a collection of MyObject to produce integers as well.  Why do the collections need to be List, as opposed to Collection or Iterable?

    if (objects.get(0) instanceof MyObject)


That's an awful idea; you're rooked if the array you are passed is empty.  If it's true that an empty list means you don't care what kind of list it is, that very strongly suggests that the entire interface is broken.

List&lt;MyObject&gt; objectList = new ArrayList&lt;MyObject&gt;();


If the list isn't supposed to by modified by the function, then you might be better off using Collections.EMPTY_LIST; it would help clarify your intent.