[英]Convert to Scala code PEM to DER Certificate Follow it up from Google KMS Library
我是 Scala 的新手,並試圖將其轉換為:
public static byte[] convertPemToDer(String pem) {
BufferedReader bufferedReader = new BufferedReader(new StringReader(pem));
String encoded =
bufferedReader
.lines()
.filter(line -> !line.startsWith("-----BEGIN") && !line.startsWith("-----END"))
.collect(Collectors.joining());
return Base64.getDecoder().decode(encoded);
}
到 Scala 代碼:
def convertPemToDer(pem: String): Array[Byte] = {
val bufferedReader = new BufferedReader(new StringReader(pem))
val encoded = bufferedReader.lines.filter((line: String) => !line.startsWith("-----BEGIN") && !line.startsWith("-----END")).collect(Collectors.joining)
Base64.getDecoder.decode(encoded)
}
它顯示了過濾器中的這種類型不匹配:
type mismatch; found : String => Boolean required: java.util.function.Predicate[_ >: String]
仔細檢查您的進口。 我可以使用這些導入來運行您的代碼:
import java.io.{BufferedReader, StringReader}
import java.util.Base64
import java.util.stream.Collectors
代碼編譯並運行得很好。 我只是在最后添加了一個println
:
object Main extends App {
def convertPemToDer(pem: String): Array[Byte] = {
val bufferedReader = new BufferedReader(new StringReader(pem))
val encoded = bufferedReader.lines
.filter((line: String) =>
!line.startsWith("-----BEGIN") && !line.startsWith("-----END")
)
.collect(Collectors.joining)
Base64.getDecoder.decode(encoded)
}
println(convertPemToDer("Elephant").mkString("Array(", ", ", ")"))
}
輸出:
Array(18, 87, -87, -123, -87, -19)
如果您沒有將 Intellij 與 Scala 插件一起使用,您的 IDE 可能無法將Functional Interfaces
識別為Single Abstract Methods
。 因此,您可能需要將代碼調整為更 Java 風格的方法,如下所示:
def convertPemToDer(pem: String): Array[Byte] = {
val bufferedReader = new BufferedReader(new StringReader(pem))
val encoded = bufferedReader.lines
.filter(new Predicate[String] {
override def test(line: String): Boolean =
!line.startsWith("-----BEGIN") && !line.startsWith("-----END")
})
.collect(Collectors.joining)
Base64.getDecoder.decode(encoded)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.