Well at least you get it... but the whole point of this was I don't want to have to create 20 different classes for 20 different weapon types. Meanwhile, everyone else still thinks I mean I want different parameters to define damage, speed, etc...
I understand exactly what you're saying, except perhaps the "scale" of different behaviors. The "scale" does have an effect in terms of a reasonable abstraction vs. engineering time.
You don't have to create 20 different classes - you only create a NEW CLASS when you need BEHAVIOUR that is different.
Exactly...you only need a new class when a behavior cannot (or isn't worth) making data-driven.
.. BEHAVIOUR wouldn't they. But your data would be different - that is the point.
Again, exactly data-driven design is your friend.
I already know HOW to make an anonymous inner class to implement the weapons the way I want... the only reason I asked this was to determine if I could somehow put the declarations for these in a separate file and be able to just import them and use an ID to refer to the object without cluttering up my main code.
With no notion of scale this is a difficult question to answer...and most likely few of us would agree on what the cleanest solution is.