To get the ClassTag object inside your function with the original syntax you
used (T: ClassTag), you can do this:
def read[T: ClassTag](): T = {
val ct = classTag[T]
ct.runtimeClass.newInstance().asInstanceOf[T]
}
Passing the ClassTag with : ClassTag lets you have an implicit parameter that
you give no name to. This is most useful if you just need it to exist to pass
it to other methods that you call, but you can also pull it out.
Matei
On August 4, 2014 at 4:41:38 PM, Marcelo Vanzin ([email protected]) wrote:
Hello,
Try something like this:
scala> def newFoo[T]()(implicit ct: ClassTag[T]): T =
ct.runtimeClass.newInstance().asInstanceOf[T]
newFoo: [T]()(implicit ct: scala.reflect.ClassTag[T])T
scala> newFoo[String]()
res2: String = ""
scala> newFoo[java.util.ArrayList[String]]()
res5: java.util.ArrayList[String] = []
On Mon, Aug 4, 2014 at 1:59 PM, Parthus <[email protected]> wrote:
> Hi there,
>
> I was wondering if somebody could tell me how to create an object with given
> classtag so as to make the function below work. The only thing to do is just
> to write one line to create an object of Class T. I tried new T but it does
> not work. Would it possible to give me one scala line to finish it? Thanks
> very much
>
> def read[T: ClassTag](path: String): T = {
>
> val obj = new T ??? // This does not work
>
> obj.load(path)
>
> obj
>
> }
>
>
>
> --
> View this message in context:
> http://apache-spark-user-list.1001560.n3.nabble.com/Create-a-new-object-by-given-classtag-tp11368.html
>
> Sent from the Apache Spark User List mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
--
Marcelo
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]