Use the
typedef
. At least typedefs are part of the language and can be constrained by the namespacing mechanisms the language has (namespace, class, struct etc). #defines, on the other hand, have the effect of performing a global search and replace over your code, which can causes horrors to occur. The C++ FAQs say it[^] quite well.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p