猿问

#在Java中定义

我开始用Java编程,并且想知道是否#define存在与C ++等效的语言。

谷歌快速搜索说没有,但是有人可以告诉我Java是否存在类似的东西吗?我正在尝试使代码更具可读性。

而不是myArray[0]我希望能够写myArray[PROTEINS]例如。


LEATH
浏览 449回答 3
3回答

慕的地6264312

不,因为没有预编译器。但是,根据您的情况,您可以实现以下相同的目的:class MyClass{    private static final int PROTEINS = 0;    ...    MyArray[] foo = new MyArray[PROTEINS];}编译器会注意到PROTEINS永远不会改变,因此会内联它,这或多或少是您想要的。请注意,在不断的访问修饰符是不重要的在这里,所以它可能是public或protected不是的私人,如果你想重复使用多个类相同的常数。

扬帆大鱼

static final int PROTEINS = 1...myArray[PROTEINS]您通常会在类本身中添加“常量”。并请注意,允许编译器优化对它的引用,因此除非您重新编译所有使用类,否则请勿对其进行更改。class Foo {  public static final int SIZE = 5;  public static int[] arr = new int[SIZE];}class Bar {  int last = arr[Foo.SIZE - 1]; }编辑循环... SIZE=4。也进行编译,Bar因为您的编译器在上一个编译周期中可能刚刚写了“ 4”!
随时随地看视频慕课网APP

相关分类

Java
我要回答