Defining a finite set of instances of a class to check against
First of all, as &quot;being special&quot; is obviously an attribute of your Type class, the check should go into the Type class, as you did, therefore always choose:
public class Type {
    ...
    public boolean isSpecial() {...}
}

over
aType.equals(new Type(&quot;specialType1&quot;)) || aType.equals(new Type(&quot;specialType2&quot;)) ||...

Regarding the implementation: I'm not too fond of creating a static collection to compare to. First of all, you search every time, then you use a relatively heavyweight equals method, which seems somewhat exaggerated to me, if the only distinction is a string passed in the constructor.
Personally, I'd use the underlying strings as a constant and determint the special flag in the constructor:
public class Type {
    private static final List&lt;String&gt; SPECIAL_CODES = Arrays.asList(&quot;this&quot;, &quot;that&quot;, &quot;whatever&quot;);
    private final String code;
    private final boolean special;

    public Type(String code) {
        this.code = code;
        this.special = SPECIAL_CODES.contains(code);
    }

    public boolean isSpecial() {
        return special;
    }
}

(Note that this change will not make a difference in runtime in real life, unless you check isSpecial() in a tight loop. It is more of a gut-feeling of being somewhat clearer.)