所以我正在用java做这个项目,其中对象a有一个数组a。然后,将数组的一部分分配给另一个对象 s,这样更改 s 中的值就会更改 a 中的值。我正在为此绞尽脑汁,但我就是不明白。我缺少一些概念。
public class IntArray implements IntSequence {
int[] a;
public IntArray(int size) {
a = new int[size];
}
public int length() {
}
public int get(int index) {
return a[index];
}
public void set(int index, int value) {
a[index] = value;
}
public IntSequence subSequence(int index, int size) {
}
public static void main(String[] args) {
IntSequence a = new IntArray(5);
a.set(0, 11);
a.set(1, 22);
a.set(3, 33);
// some more values
IntSequence s = a.subSequence(2, 2);
s.set(0, 100);
s.set(1, 200);
System.out.println(a.get(2)); // prints 100.
}
}
public interface IntSequence {
int length();
int get(int index);
void set(int index, int value);
IntSequence subSequence(int index, int size);
}
有人可以给我一个正确的方向吗?谢谢。
最佳答案
有多种方法可以做到这一点。
我认为最简单的方法是创建一个作为子序列的新类。
public class SubSequence implements IntSequence {
private int[] a;
private int start;
private int size;
public constructor(int[] arr, int start, int size) {
this.a = arr;
this.start = start;
this.size = size;
}
public int get (int index){
return a[start + index];
}
public IntSequence subSequence(int start, int size) {
return new SubSequence(a, start, size);
}
// And so on
}
另一种方法是返回一个匿名类。您必须将变量设为最终变量才能从匿名类访问它们。这稍微好一些,因为您不需要构造函数,您应该能够通过调用 subSequence
方法从现有列表创建列表。
public IntSequence subSequence(final int start, final int size) {
return new IntSequence() {
public int length() {
return size;
}
public int get(index) {
return a[start + index ]
}
... and so on
}
}
此代码没有错误检查,您应该添加它以确保不会超出数组边界,
关于java - 在java中链接对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22367764/