像 C++ 一样在 Java 中创建结构体

问题描述 投票:0回答:3

我想在java中创建一个结构体,就像c++一样:

struct MyStruct {
    int x;
};
#include <iostream>
int main() {
    MyStruct Struct;
    Struct.x = 0;
    std::cout << Struct.x;
    return 0;
}

有人可以帮助我吗?

java struct
3个回答
0
投票

您可以使用类,其功能类似于 C++ 中的

struct

例如,C++

point
结构可能看起来像

typedef struct __point {
   int x, y;
} point;

Java

point
类具有以下形式

final class Point { 
    private final double x;    // x-coordinate
    private final double y;    // y-coordinate

    // point initialized from parameters
    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }

    // accessor methods
    public double x() { return x; }
    public double y() { return y; }

    // return a string representation of this point
    public String toString() {
        return "(" + x + ", " + y + ")";
    } 

}

我们可能会拨打以下电话:

Point q = new Point(0.5, 0.5);
System.out.println("q  = " + q);
System.out.println("x = " + q.x());

0
投票
public class ircodes {
    public ircodes(String msg_id, String node_id, String frequency, String data) {
        this.hdr = new msg_hdr(4 + data.length(), Integer.parseInt(msg_id), Integer.parseInt(node_id));
        this.frequency = Integer.parseInt(frequency);
        this.data = data;
    }

    public class msg_hdr {
        int msg_len;
        int msg_id;
        int node_id;

        public msg_hdr(int msg_len, int msg_id, int node_id) {
            this.msg_len = 12 + msg_len;
            this.msg_id = msg_id;
            this.node_id = node_id;
        }
    }
    msg_hdr hdr;
    int frequency;
    String data;

    public ByteBuffer serialize() {
        ByteBuffer buf = ByteBuffer.allocate(hdr.msg_len);
        buf.putInt(hdr.msg_len);
        buf.putInt(hdr.msg_id);
        buf.putInt(hdr.node_id);
        buf.putInt(frequency);
        buf.put(data.getBytes());
        return buf;
    }
}

-1
投票

Java 没有像 C 或 C++ 那样的

struct
,但您可以使用 Java 类并将它们视为
struct
。最重要的是,您当然可以将其所有成员声明为公共成员。 (完全像
struct
一样工作)

class MyClass
{
    public int num;
}

MyClass m = new MyClass();
m.num = 5;
System.out.println(n.num);

struct
class
之间的区别之一是结构没有方法。如果您创建一个没有方法的类,它将像
struct
一样工作。

但是,您始终可以放入方法(getter 和 setter)并将变量设置为私有(这样不会有什么坏处)。

class MyClass
{
    private int num;
    public void setNum(int num){
        this.num = num
    }
    public int getNum(){
        return num
    }
}

MyClass m = new MyClass();
m.setNum(5);
System.out.println(n.getNum());

Java 没有

struct
,但类可以做与
struct
完全相同的事情。

© www.soinside.com 2019 - 2024. All rights reserved.