Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将不同的值传递给scala对象中的变量_Java_Mongodb_Scala_Scala 2.10_Scala 2.11 - Fatal编程技术网

Java 如何将不同的值传递给scala对象中的变量

Java 如何将不同的值传递给scala对象中的变量,java,mongodb,scala,scala-2.10,scala-2.11,Java,Mongodb,Scala,Scala 2.10,Scala 2.11,我想在mongodb中创建不同的集合,因为我有一个scala对象类。这是我的代码 object Factory { val connectionMongo = MongoConnection(SERVER) val collectionMongo = connectionMongo(DATABASE)("collectionA") } object Factory { var COLLECTIONName:String="" def setCollectionNa

我想在mongodb中创建不同的集合,因为我有一个scala对象类。这是我的代码

object Factory {

val connectionMongo = MongoConnection(SERVER)
val collectionMongo = connectionMongo(DATABASE)("collectionA")

}
    object Factory {

    var COLLECTIONName:String=""
    def setCollectionName(name:String)
    {
      COLLECTIONName=name
    }
    val connectionMongo = MongoConnection(SERVER)
    val collectionMongo = connectionMongo(DATABASE)(COLLECTIONName)

    }

class testA {

//getting collection object 
Factory.setCollectionName("collectionA")
collectionMongo.find()//fetching the record of collectionA

}

class testB {

//getting collection object 
Factory.setCollectionName("collectionB")
collectionMongo.find()//fetching the record of collectionB
}
我想添加不同的集合名称,我就是这样做的 对象类这是我的代码

object Factory {

val connectionMongo = MongoConnection(SERVER)
val collectionMongo = connectionMongo(DATABASE)("collectionA")

}
    object Factory {

    var COLLECTIONName:String=""
    def setCollectionName(name:String)
    {
      COLLECTIONName=name
    }
    val connectionMongo = MongoConnection(SERVER)
    val collectionMongo = connectionMongo(DATABASE)(COLLECTIONName)

    }

class testA {

//getting collection object 
Factory.setCollectionName("collectionA")
collectionMongo.find()//fetching the record of collectionA

}

class testB {

//getting collection object 
Factory.setCollectionName("collectionB")
collectionMongo.find()//fetching the record of collectionB
}
但此代码未按预期工作,它始终将COLLECTIONName值设置为空字符串“” 请指导我哪里做错了,请帮助你写的

val COLLECTIONName:String=""
然后重新分配值。 不能在val中重新分配值,而应使用var。 但这也是一个糟糕的方法。。因此,尝试修改代码,以便它必须以更实用的方式编写

修改后的代码类似于:

class Factory(connectionName:String) {
    val connectionMongo = MongoConnection(SERVER)
    val collectionMongo = connectionMongo(DATABASE)(connectionName)
}

class testA {
    //getting collection object 
    val factory=new Factory("collectionA")
    factory1.collectionMongo.find()//fetching the record of collectionA
}

class testB {
    //getting collection object 
    val factory=new Factory("collectionB")
    factory.collectionMongo.find()//fetching the record of collectionB
}
我不确定这是否是最好的方式,但这完全是一个更好的方式

单例对象方法的问题:

object Factory {
    var connectionName:String=_
    val connectionMongo = MongoConnection(SERVER)
    def collectionMongo = connectionMongo(DATABASE)(connectionName)

    }

class testA {

//getting collection object 
 Factory.connectionName="collectionA"
Factory.collectionMongo.find()//fetching the record of collectionA

}

class testB {

//getting collection object 
 Factory.connectionName="collectionB"
Factory.collectionMongo.find()//fetching the record of collectionB
}
我希望这有帮助

你已经写好了

val COLLECTIONName:String=""
然后重新分配值。 不能在val中重新分配值,而应使用var。 但这也是一个糟糕的方法。。因此,尝试修改代码,以便它必须以更实用的方式编写

修改后的代码类似于:

class Factory(connectionName:String) {
    val connectionMongo = MongoConnection(SERVER)
    val collectionMongo = connectionMongo(DATABASE)(connectionName)
}

class testA {
    //getting collection object 
    val factory=new Factory("collectionA")
    factory1.collectionMongo.find()//fetching the record of collectionA
}

class testB {
    //getting collection object 
    val factory=new Factory("collectionB")
    factory.collectionMongo.find()//fetching the record of collectionB
}
我不确定这是否是最好的方式,但这完全是一个更好的方式

单例对象方法的问题:

object Factory {
    var connectionName:String=_
    val connectionMongo = MongoConnection(SERVER)
    def collectionMongo = connectionMongo(DATABASE)(connectionName)

    }

class testA {

//getting collection object 
 Factory.connectionName="collectionA"
Factory.collectionMongo.find()//fetching the record of collectionA

}

class testB {

//getting collection object 
 Factory.connectionName="collectionB"
Factory.collectionMongo.find()//fetching the record of collectionB
}

我希望这有帮助

这是典型的工厂模式,您可以将
collectionMongo
从val更改为如下函数

object Factory {
    val SERVER = "<some server>"
    val DATABASE = "<some database>"
    val connectionMongo = MongoConnection(SERVER)(DATABASE)
    def getCollection(name: String) = connectionMongo(name)
}

这是典型的工厂模式,您可以将
collectionMongo
从val更改为如下函数

object Factory {
    val SERVER = "<some server>"
    val DATABASE = "<some database>"
    val connectionMongo = MongoConnection(SERVER)(DATABASE)
    def getCollection(name: String) = connectionMongo(name)
}

对不起,这是一个打字错误,我已经编辑过了,它实际上是var…你能用一个例子来解释一个更好的方法吗?我已经更新了答案,看一看!)投票Dhanks但是我想使用scala对象,因为我需要一个单例对象,这就是为什么我不使用scala类,但使用var和过度隐藏值是一个糟糕的方法,如果你想遵循单例对象方法,那么在那里使用var,并检查更新的代码。对不起,这是一个输入错误,我已经编辑过了,它实际上是var…你能用一个例子来解释一个更好的方法吗?我已经更新了答案,看一看!)投票Dthanks但是我想使用scala对象,因为我需要一个单例对象,这就是为什么我不使用scala类,但使用var和过度隐藏值是一个糟糕的方法,如果你想遵循单例对象的方法,那么在那里使用var,并检查更新的代码会起作用。它会影响性能吗?不会。但我建议你完全重写你的代码。你能通过例子解释一下吗?我很难理解Make collectionMongo“lazy val”行得通。它会影响性能吗?不会。但我建议你完全重写你的代码。你能用我难以理解的例子解释一下吗