当前位置: 首页 > 知识库问答 >
问题:

java中如何像go一样实现结构体嵌套,达到嵌套对象的元素冒泡到外层?

濮阳唯
2023-08-03

如下是我在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我知道有匿名内部类, 但是我想知道如何做到这样的结果?

共有1个答案

江向阳
2023-08-03

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);    }}
 类似资料:
  • 4. 嵌套结构体 结构体也是一种递归定义:结构体的成员具有某种数据类型,而结构体本身也是一种数据类型。换句话说,结构体的成员可以是另一个结构体,即结构体可以嵌套定义。例如我们在复数的基础上定义复平面上的线段: struct segment { struct complex_struct start; struct complex_struct end; }; 从第 1 节 “复合类型与结构体”

  • 我正在使用ElasticSearch5.4,试图从嵌套数据类型中删除一个元素。 我有以下映射: 我在《邮递员》中尝试过以下内容: localhost:9200/asset/bookmark/20976/_update?pretty 但我得到以下错误: 我在StackOverflow[1][2]的几个不同问题中遵循了这些建议,但没有成功。 嵌套对象是有效的,因为我已经用数据填充了它。此外,值也是有效

  • 问题内容: 我已经开始使用https://mholt.github.io/json-to-go/将API JSON转换为go结构,但我真的很喜欢它,但是我仍然坚持如何在Report Definition结构中初始化Filters数组结构如下所示。 我似乎无法引用在Filters结构甚至是Filters结构中声明的项,以创建新的Filter项目并将其附加到Filters。 是否可以使用原样编写的Re

  • 我有一门java课 在上面的场景中,示例具有子示例,这又是示例列表。此嵌套可以是 n 级。我想实现的是有一个示例列表,即扁平化上面的对象并将所有示例收集到最终列表中(收集所有n级示例)。一个明显的方法是递归。在Java中有什么方法可以更有效地实现它。我尝试了一些java 8概念,但它们不符合要求。

  • 问题内容: 嗨,我是Golang的新手,请帮助我。我已经在结构内部定义了一个结构。但是,当我尝试初始化主结构时出现错误。 我得到的错误是:不能在字段值中使用(类型接口{})作为类型结构:需要类型声明。 请提出一种初始化DetailsFilter的方法。我尝试执行在Golang中初始化嵌套结构中描述的方法,但即使这样也不起作用。 问题答案: 不幸的是,如果结构字段的类型是匿名结构,则 _在构造时_只

  • 问题内容: 我在尝试将嵌套元素映射到同一Java类时遇到麻烦。 XML格式 我在这里想要做的是将属性和元素设置为类。 模块类别 滑梯类 SlideText类 我尝试在属性上使用,但是遇到了只能应用于集合的异常。 有没有办法映射到的属性? 谢谢。 更新 为了说明我要在此处完成的工作,根据使用的布局,幻灯片可以是任何类型。A 知道它是一个,但不知道它是什么幻灯片,这就是为什么我有抽象类。 本质上,如果