Queue Implementation using a Linked List
BUG:

public void removeFirst() {

        Node temp = first;
        if (first.next == null)
            last = null;
        first = first.next;

    }


This crashes if you have an empty list. Add a check for first == null. Additionally... what's that temp variable for?



Don't define the Node as T, define the List to contain T. 

public class LinkList&lt;T&gt;


This because you use the T outside the Node class and you ended up having to add it to the addLast method.



    if (isEmpty()) {
        n.next = first;
        first = n;
        last = n;
    } else {
        last.next = n;
        last = n;
        last.next = null;
    }


You already know that n.next is null. You also know that first is null, because that's what defines isEmpty().

So instead, try this:

    if (isEmpty()) {
        first = n;
    } else {
        last.next = n;
    }
    last = n;
    last.next = null;


It does the same thing.



Design:

You have an insert (enqueue) method... but there's no way to retrieve an object that went into the Queue. removeFirst could return the object. This drastically cuts down on the uses of such an object (it's useless now).