【发布时间】:2015-02-18 08:22:46
【问题描述】:
我有两个(兄弟)类,都是同一个父类的子类。 Parent包含了两个兄弟共享的所有方法,而兄弟类只包含不共享的方法并且有不同的实现。
例子,
class Parent() {
}
class Sibling1 extends Parent() {
byte[] sharedSecret;
int sharedSecretLength;
public generateKey() {
sharedSecret = keyAgree.generateSecret());
sharedSecretLength = sharedSecret.length);
}
}
class Sibling2 extends Parent() {
byte[] sharedSecret2;
int sharedSecretLength2;
public generateKey() {
sharedSecret2 = new byte[sharedSecretLength];
sharedSecretLength2 = keyAgree.generateSecret(sharedSecret2, 0);
}
public int getSharedSecretLength() {
return sharedSecretLength();
}
}
如您所见,两者都包含相同的方法,但实现方式不同。我的问题是,如果创建了两个类(sibling1 和sibling2)的对象并且成功生成了obj2 generateKey 取决于obj1 的sharedSecretLength。例如,
Parent obj1 = new Sibling1();
Parent obj2 = new Sibling2();
obj1 在不同的类(我创建的服务器类)中实例化,obj2 在不同的类(我创建的客户端)中实例化。如果 obj1 调用它自己的 generateKey --> ((Sibling1)obj1).generateKey(),我如何在同一个对象 (obj1) 上使用 getSharedSecretLength 将所需信息传递给 obj2 的 generateKey 以成功生成?我试过类似的东西(在 obj2 的 generateKey() 中):
sharedSecret2 = new byte[Sibling1.sharedSecretLength];
...它没有工作。在 Sibling2 类中创建 Sibling1 obj1 然后这样调用它,例如,
Sibling1 xx = null;
.
.
sharedSecret2 = new byte[((Sibling1)xx).sharedSecretLength];
不起作用,因为 xx 是新对象。我正在尝试使用旧的 obj,它在其中生成它的密钥并包含非 0 的 sharedSecretLength
如果 obj1 和 obj2 都在同一个类中创建,那就更容易了。
请帮我指出正确的方向
【问题讨论】:
-
generateKey()方法的返回类型在哪里? -
Sibling1和Sibling2彼此不了解。他们甚至不知道对方的存在。为什么ArrayList会关心有人创建了同样继承自AbstractCollection的HashSet。考虑到这一点,你到底在问什么?
标签: java class methods siblings