我正在尝试学习Scala Object和Class。我来自Java,它与 Scala 非常相似,但在语法上不一样。
在Java中,我会创建一个类似的类:
public class Wallet {
private PublicKey publicKey;
private PrivateKey privateKey;
private int balance = 0;
public Wallet() throws NoSuchAlgorithmException {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
KeyPair keyPair = keyPairGenerator.generateKeyPair();
privateKey = keyPair.getPrivate();
publicKey = keyPair.getPublic();
}
public int getBalance(){
return balance;
}
}
这定义了一个Wallet对象的模板,我可以在Java中将其实例化为:
Wallet wallet = new Wallet();
这还将在构造函数中创建一个PrivateKeyand并将其分配给相应的类成员。PublicKeyWallet
我知道Scala使用了一种略有不同的方法,其中类只是可实例化对象的模板,而Objects 是Singleton持久存储信息的类型对象。
另外,根据这篇文章,我发现 an在文件Object中经常用作伴随对象。Class
使用上面的Wallet示例,我试图在Scala中重新创建它。这是我到目前为止所拥有的:
class Wallet {
var publicKey: PublicKey
var privateKey: PrivateKey
var balance: Int = 0
def this() {
this
val keyPair = KeyPairGenerator.getInstance("SHA-256").generateKeyPair()
privateKey = keyPair.getPrivate
publicKey = keyPair.getPublic
}
def getBalance(): Int = {
balance
}
}
问题:
“钱包”类必须声明为抽象或在“com.simple.blockchain.Wallet”中实现抽象成员“publicKey:PublicKey”
现在这让我很困惑。
在Java中,将未实例化的对象声明为类成员通常会是一个问题,因此,如果我尝试按照之前的 SO 帖子中的建议添加一个Companion Object并遵循他们的建议:
object Wallet {
var privateKey: PrivateKey
var publicKey: PublicKey
}
我收到一个错误:
只有类可以有已声明但未定义的成员
婷婷同学_
小唯快跑啊
互换的青春
收到一只叮咚
相关分类