Java中类似JSON的对象语法
我不想问这么琐碎的问题,但我不能解决这个问题为了方便起见,我尝试创建一个基本对象,如下所示:Java中类似JSON的对象语法,java,class,object,constructor,instance,Java,Class,Object,Constructor,Instance,我不想问这么琐碎的问题,但我不能解决这个问题为了方便起见,我尝试创建一个基本对象,如下所示: triangle = { side: { A: 0, B: 0, C: 0 }, angle: { a, b, c }, function calcAngle(){} } 理想情况下,我只想动态创建一个通用对象。我只创建了一个“三角形”,我必须为一个实例创建一个完整的类吗?我确信这个问题在某个地方得到了回答,但我似乎无法正确回答任何有用的问题。为了让你开心,我将发布我的一些失败: pub
triangle = {
side: { A: 0, B: 0, C: 0 },
angle: { a, b, c },
function calcAngle(){}
}
理想情况下,我只想动态创建一个通用对象。我只创建了一个“三角形”,我必须为一个实例创建一个完整的类吗?我确信这个问题在某个地方得到了回答,但我似乎无法正确回答任何有用的问题。为了让你开心,我将发布我的一些失败:
public class TGUI{
// Attempt One
public Object triangle = new Object(){ int test; };
public static void main(String[] args) {
triangle.test = 1;
// ^- Cannot make a static reference to the non-static field triangle
triangle tri = new triangle();
// ^- Made the compiler cry; triangle cannot be resolved to as type
}
// Attempt Two
public class triangle{ int test; }
public static void main(String[] args) {
triangle tri = new triangle();
/* ^- No enclosing instance of TGUI is accessible. Must qualify the allocation with an enclosing instance of type TGUI (eg x.new A() where x is an instance of TGUI) */
}
// Attempt Three
public void triangle(){ int test = 1; }
public static void main(String[] args) {
triangle tri = new triantle();
// ^- triangle cannot be resolved to a type
}
// Attempt Four
public TGUI(){ int test; }
/* I'm gonna quit here, you get the idea */
}
理想情况下,我只想动态创建一个通用对象
那么就不应该使用静态类型的语言
在Java中实现这一点的唯一方法是
- 使用反射(不是你想要的),或者
- 使用JSON库
- 完全放弃打字,使用
地图。
三角形类。Java需要大量的输入,习惯它比编写糟糕的代码来避免它要好得多
理想情况下,我只想动态创建一个通用对象
那么就不应该使用静态类型的语言
在Java中实现这一点的唯一方法是
- 使用反射(不是你想要的),或者
- 使用JSON库
- 完全放弃打字,使用
地图。
在您的例子中,听起来您只需要一个实际的三角形类。Java需要大量的输入,习惯它比编写糟糕的代码来避免它要好。尝试2更接近。您需要一个嵌套的静态类:
(或三角形
可以在单独的文件中)
Java在其静态类型系统上的操作方式与此相去甚远。尝试2更接近。您需要一个嵌套的静态类:
(或三角形
可以在单独的文件中)
Java在其静态类型系统上的操作方式与此相去甚远。事实上,您应该使用基于JVM的脚本语言(如Groovy)来实现这种开箱即用的动态操作。您将创建一个元类的实例
,并动态添加所有字段。
好的ol'Java only的另一个选择是创建一个简单的(marker?)接口,并在需要的地方将其实现为一个匿名内部类。实际上,您应该使用基于JVM的脚本语言,如Groovy,来实现这种开箱即用的动态功能。您将创建一个元类的实例
,并动态添加所有字段。
public class Triangle {
double sideA;
double sideB;
double sideC;
double[] angles = new double[3];
double calcAngle() {
something;
return somethingElse;
}
}
好的ol'Java only的另一个选项是创建一个简单的(marker?)接口,并在需要的地方将其实现为一个匿名内部类。您可以只使用三个双值的数组吗?您需要定义一个三角形类。一般来说,它不应该嵌套,除非你有充分的理由这样做;x、 角度b,而不是侧面[0];角度[1];我想这就是办法。所以,正确的方法是在一个单独的文件中定义一个新类,只使用一次对象?也许Map就是一种方式,你可以选择将它保留为JSON格式。您失去了能够调用其上的方法的“经典性”,但数据值仍然可以以一种相当有意义的方式访问。您是否可以只使用三个double
值的数组?您需要定义一个三角形类。一般来说,它不应该嵌套,除非你有充分的理由这样做;x、 角度b,而不是侧面[0];角度[1];我想这就是办法。所以,正确的方法是在一个单独的文件中定义一个新类,只使用一次对象?也许Map就是一种方式,你可以选择将它保留为JSON格式。您失去了能够在其上调用方法的“经典性”,但数据值仍然可以以一种相当有意义的方式访问。
public class Triangle {
double sideA;
double sideB;
double sideC;
double[] angles = new double[3];
double calcAngle() {
something;
return somethingElse;
}
}