package test
import scala.collection.mutable.ArrayBuffer
class Thing
class GoodThing extends Thing
class BadThing extends Thing
object IsInstanceOfTest extends Application{
val buffer=new ArrayBuffer[Thing]
buffer += new BadThing
buffer += new GoodThing
buffer += new GoodThing
def filterThing[T<:Thing]=buffer.filter(_.isInstanceOf[T])
def filterThing(typeName:String)=buffer.filter(_.getClass.getSimpleName==typeName)
println(filterThing[GoodThing])
println(filterThing("GoodThing"))
}
Вывод программы:
ArrayBuffer(test.BadThing@10ef90c, test.GoodThing@3ee284, test.GoodThing@8965fb)
ArrayBuffer(test.GoodThing@3ee284, test.GoodThing@8965fb)
Почему filterThing[T<:Thing] не срабатывает правильно? Как написать правильно? Нужно, чтобы работало как filterThing(typeName:String)