java中如何像go一样实现结构体嵌套,达到嵌套对象的元素冒泡到外层?
如下是我在go中经常用到的特性, 它可以冒泡结构体元素到上一层:
package mainimport "fmt"
import "encoding/json"
type A struct {
Ax, ay int
}
type B struct {
A
Bx, by float32
}
func main() {
b := B{A{1, 2}, 3.0, 4.0}
bytes, _ := json.Marshal(b)
fmt.Println(string(bytes))
}
output:
{"Ax":1,"Bx":3}
这个东西有什么用?
遍历持久化数据到A上, 然后在A的基础上附加Bx属性
java我知道有匿名内部类, 但是我想知道如何做到这样的结果?
回答:
Java中的类是不能直接嵌套的,不过可以模拟一下:
public class OuterClass { private InnerClass innerClass;
private float Bx;
private float by;
public OuterClass(int Ax, int ay, float Bx, float by) {
this.innerClass = new InnerClass(Ax, ay);
this.Bx = Bx;
this.by = by;
}
public int getAx() {
return innerClass.getAx();
}
public float getBx() {
return Bx;
}
private class InnerClass {
private int Ax;
private int ay;
public InnerClass(int Ax, int ay) {
this.Ax = Ax;
this.ay = ay;
}
public int getAx() {
return Ax;
}
}
}
用继承java里:
class A { public int Ax;
private int ay;
// getters and setters
}
class B extends A {
public float Bx;
private float by;
// getters and setters
}
public class Main {
public static void main(String[] args) {
B b = new B();
b.Ax = 1;
b.Bx = 3.0f;
System.out.println("Ax: " + b.Ax + ", Bx: " + b.Bx);
}
}
以上是 java中如何像go一样实现结构体嵌套,达到嵌套对象的元素冒泡到外层? 的全部内容, 来源链接: utcz.com/p/945282.html