我有两个(兄弟)类,都是同一个父类的子类。 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都是在同一个类中创建的,那就更容易了。
请帮助我指出正确的方向
答案 0 :(得分:0)
而不是
((Sibling1)xx).sharedSecretLength
称之为
((Sibling1)xx).getSharedSecretLength()
在java中,如果它不接受参数并且它不按字段名称工作,则传递空括号,您必须提供与您定义的相同的方法名称。
答案 1 :(得分:0)
听起来你应该这样重构,以便Sibling2上的generateKey方法具有它所需的参数:
Sibling1 obj1 = new Sibling1();
obj1.generateKey();
Siblibg2 obj2 = new Sibling2();
obj2.generateKey(obj1.getSharedSecretLength());