gpt4 book ai didi

java - 关于代码段的类设计注意事项

转载 作者:行者123 更新时间:2023-12-02 06:46:06 26 4
gpt4 key购买 nike

下面的代码段,为什么方法read的定义中有一个MyWritable,而另外两个方法writereadFields 没有?另外,为什么read要定义为static呢?如何理解这个设计?

public class MyWritable implements Writable {
// Some data
private int counter;
private long timestamp;

public void write(DataOutput out) throws IOException {
out.writeInt(counter);
out.writeLong(timestamp);
}

public void readFields(DataInput in) throws IOException {
counter = in.readInt();
timestamp = in.readLong();
}

public static MyWritable read(DataInput in) throws IOException {
MyWritable w = new MyWritable();
w.readFields(in);
return w;
}
}

最佳答案

答案很简单。

static read 方法允许您调用实际类上的方法并返回一个实例。因此,不要这样做:

MyWritable writer = new MyWritable();
writer.readFields(input);

你可以这样做:

MyWritable writer = MyWritable.read(input);

并达到相同的结果。这是为了方便。

然后,它返回一个 MyWritable 因为否则你将永远无法获得该对象!第一个方法可以返回 void,因为您已经创建了一个对象实例,但在后者中,它必须返回它为您创建的实例。

关于java - 关于代码段的类设计注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18622321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com