posted 19 years ago
usually a "first-class" thing in a language is a thing you can use the language's own syntactic and semantic structures to manipulate, without having to invoke library code. so Objects are first-class in Java, and so are ints, booleans, doubles, and so forth. but List's, Map's, and Swing Container's are not first-class; they're higher-level constructs built on top of first-class objects.
i suppose one could argue that a thing isn't first-class unless it's possible to create new instances of it at run-time, store them in variables, pass them around, and so on; i'm unsure if there's any widespread agreement on whether or not that's considered a requirement for "first-class" status. if it is required, then methods (functions) could not be considered first-class things in Java. (personally, i would agree with this notion.)