Java - 是否可以在不创建新实例的情况下从内部 class 获取 return 值
Java - Is it possible to return value from inner class without creating new instance
我想创建这样的结构,用户可以在其中进入内部 classes,并接收一个值,即使他停在 class 本身。
这是一个例子
public abstract class TREE {
public static class PLAYER{
private static final int value = 100; //(idea example)where to store inner PLAYER value
public static final int NAME = 0;
public static final int SURNAME = 1;
}
}
虽然可以使用
来实现价值
int a = TREE.PLAYER.NAME;
我也希望能够使用
获得价值
int b = TREE.PLAYER;
我宁愿不使用任何函数,而只是使用点运算符遍历路径。该值本身可以存储在 class 中(就像我在 PLAYER class value 下的示例)或简单地以其他方式返回,但我不知道这是否是可以的。
也许我不知道的其他结构更适合这种结构。
谢谢
TREE.PLAYER
是一种类型,所以你只能做类似
的事情
Class b = TREE.PLAYER.class;
如果你想得到像 int
这样的值,你需要引用一个可以转换为 int 的 public 字段。
Java 不支持添加语法糖来假装 class 是一个 int 字段。
遗憾的是,在 Java 中您无法定义 "default" 值。在 Java 中,当你有一些语法结构时,你可以期望它的行为一致。不幸的是,这也会阻止您创建 "magic".
回到您的案例,最接近 "default" 值的方法是创建与您的 class 同名的函数。在这种情况下,您可以通过向 "class name":
添加空括号来访问 "default" 值
public class TREE {
public static int PLAYER() {
return PLAYER.VALUE;
}
public final static class PLAYER {
private PLAYER() {
}
public final static int VALUE = 1;
public final static String NAME = "Player";
}
public static void main(String[] args) {
System.out.println(TREE.PLAYER());
System.out.println(TREE.PLAYER.NAME);
}
}
另一种选择是使用在 Java 中合法的短标识符,例如 $
或 _
:
public final static class PLAYER {
private PLAYER() {
}
public final static int _ = 1;
public final static int $ = 1;
public final static int VALUE = 1;
public final static String NAME = "Player";
}
因此您可以像这样访问 "default value":TREE.PLAYER.$
.
我想创建这样的结构,用户可以在其中进入内部 classes,并接收一个值,即使他停在 class 本身。
这是一个例子
public abstract class TREE {
public static class PLAYER{
private static final int value = 100; //(idea example)where to store inner PLAYER value
public static final int NAME = 0;
public static final int SURNAME = 1;
}
}
虽然可以使用
来实现价值int a = TREE.PLAYER.NAME;
我也希望能够使用
获得价值int b = TREE.PLAYER;
我宁愿不使用任何函数,而只是使用点运算符遍历路径。该值本身可以存储在 class 中(就像我在 PLAYER class value 下的示例)或简单地以其他方式返回,但我不知道这是否是可以的。
也许我不知道的其他结构更适合这种结构。
谢谢
TREE.PLAYER
是一种类型,所以你只能做类似
Class b = TREE.PLAYER.class;
如果你想得到像 int
这样的值,你需要引用一个可以转换为 int 的 public 字段。
Java 不支持添加语法糖来假装 class 是一个 int 字段。
遗憾的是,在 Java 中您无法定义 "default" 值。在 Java 中,当你有一些语法结构时,你可以期望它的行为一致。不幸的是,这也会阻止您创建 "magic".
回到您的案例,最接近 "default" 值的方法是创建与您的 class 同名的函数。在这种情况下,您可以通过向 "class name":
添加空括号来访问 "default" 值public class TREE {
public static int PLAYER() {
return PLAYER.VALUE;
}
public final static class PLAYER {
private PLAYER() {
}
public final static int VALUE = 1;
public final static String NAME = "Player";
}
public static void main(String[] args) {
System.out.println(TREE.PLAYER());
System.out.println(TREE.PLAYER.NAME);
}
}
另一种选择是使用在 Java 中合法的短标识符,例如 $
或 _
:
public final static class PLAYER {
private PLAYER() {
}
public final static int _ = 1;
public final static int $ = 1;
public final static int VALUE = 1;
public final static String NAME = "Player";
}
因此您可以像这样访问 "default value":TREE.PLAYER.$
.