Collection mit Generic filtern

Holycrap

Grünschnabel
Hallo!

Ich möchte aus einer Collection nur bestimmte Klassen filtern, allerdings bekomme ich folgenden Compilerfehler bei der instanceof-Abfrage.

Fehler:
Code:
found   : T
required: class or array
            if ( go instanceof T ) {
Mir ist auch klar wieso dieser Fehler auftritt und mir würde auch ein anderer Lösungsweg dazu einfallen, aber dieser ist vermutlich noch unsauberer als dieser Ansatz.

Mein Code bis jetzt:
Code:
public <T extends MyClass> List<T> filter( T filterClass ) {
        
        List<MyClass> list = ...code to get an list...;
        if ( list == null ) {
            return null;
        }
        
        List<T> list2 = new ArrayList<T>();
        for ( MyClass o : list ) {
            if ( o instanceof T ) {
                list2.add( (T) o );
            }
        }
        return list2;
    }

Ich hoffe ihr könnt mir bei meinem Problem helfen, oder mir einen anderen Weg zeigen.

mfg
 
Guten Tag,

es gibt ein FileFilter Inteface was du implementieren kannst. Dieses kannst du dann auf eine Liste anwenden mit der Methode setFileFilter( FileFilter in_filter ).

Java:
@Override
	public boolean accept( File in_File )
	{
		boolean bAcceptableFile = false;
		
		if( in_File == null )
		{
			System.out.println("Die zuprüfende Datei existiert nicht!" );
			return bAcceptableFile;
		}
		
		String strPath = in_File.getName();
		
		if( strPath.indexOf(".") == -1 )
		{
			return bAcceptableFile;
		}
		
		for( Iterator i = m_xListeDateiTypen.iterator();  i.hasNext(); )
		{
			if( strPath.endsWith((String) i.next()) )
			{
			  bAcceptableFile = true;
			  break;
			}
		}
		return bAcceptableFile;
   }


so könnte die Methode aussehen die das Interface vorschreibt. Ich hoffe sowas meinteste ^^.
Bei weiteren Fragen frag =)

@edit ich hab das ganze für bestimmte Strings gemacht du müsstest die Liste dann nur für classes machen ;)

Gruß, Orb.
 
Zurück