如果我有以下具有私有构造函数的case类,并且我无法访问companion对象中的apply-method.
case class Meter private (m: Int)
val m = Meter(10) // constructor Meter in class Meter cannot be accessed...
Run Code Online (Sandbox Code Playgroud)
有没有办法将case类与私有构造函数一起使用,但是在公开的伴随中保留生成的apply-method?
我知道两个选项之间没有区别(在我的例子中):
val m1 = new Meter(10)
val m2 = Meter(10)
Run Code Online (Sandbox Code Playgroud)
但我想禁止第一种选择.
- 编辑 -
令人惊讶的是以下工作(但实际上并不是我想要的):
val x = Meter
val m3 = x(10) // m3 : Meter = Meter(10)
Run Code Online (Sandbox Code Playgroud) 我无法访问SparkConf包中.但我已经导入了import org.apache.spark.SparkConf.我的代码是:
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.rdd.RDD
import org.apache.spark._
import org.apache.spark.streaming._
import org.apache.spark.streaming.StreamingContext._
object SparkStreaming {
def main(arg: Array[String]) = {
val conf = new SparkConf.setMaster("local[2]").setAppName("NetworkWordCount")
val ssc = new StreamingContext( conf, Seconds(1) )
val lines = ssc.socketTextStream("localhost", 9999)
val words = lines.flatMap(_.split(" "))
val pairs_new = words.map( w => (w, 1) )
val wordsCount = pairs_new.reduceByKey(_ + _)
wordsCount.print()
ssc.start() // Start the computation
ssc.awaitTermination() // Wait for the computation to the …Run Code Online (Sandbox Code Playgroud)