[Scala]Отфильтровать объекты по типу
От: Akcelisto  
Дата: 15.06.08 11:11
Оценка:
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)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.