Package weka.core

# Class ClassDiscovery

java.lang.Object
weka.core.ClassDiscovery

All Implemented Interfaces:
  `RevisionHandler`

public class ClassDiscovery extends Object implements RevisionHandler
This class is used for discovering classes that implement a certain interface or a derived from a certain class.

Version:
  $Revision: 5377 $
Author:
  FracPete (fracpete at waikato dot ac dot nz)
See Also:
  - `ClassDiscovery.StringCompare`

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`ClassDiscovery.StringCompare`
compares two strings.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final boolean`
`VERBOSE`
whether to output some debug information.

## Constructor Summary

Constructors
Constructor
Description
`ClassDiscovery()`

## Method Summary

Modifier and Type
Method
Description
`static void`
`clearCache()`
clears the cache for class/classnames relation.
`static Vector`
`find(Class cls, String pkgname)`
Checks the given package for classes that inherited from the given class, in case it's a class, or implement this class, in case it's an interface.
`static Vector`
`find(Class cls, String[] pkgnames)`
Checks the given packages for classes that inherited from the given class, in case it's a class, or implement this class, in case it's an interface.
`static Vector`
`find(String classname, String pkgname)`
Checks the given package for classes that inherited from the given class, in case it's a class, or implement this class, in case it's an interface.
`static Vector`
`find(String classname, String[] pkgnames)`
Checks the given packages for classes that inherited from the given class, in case it's a class, or implement this class, in case it's an interface.
`static Vector`
`findPackages()`
Lists all packages it can find in the classpath.
`String`
`getRevision()`
Returns the revision string.
`static boolean`
`hasInterface(Class intf, Class cls)`
Checks whether the given class implements the given interface.
`static boolean`
`hasInterface(String intf, String cls)`
Checks whether the given class implements the given interface.
`static boolean`
`isSubclass(Class superclass, Class otherclass)`
Checks whether the "otherclass" is a subclass of the given "superclass".
`static boolean`
`isSubclass(String superclass, String otherclass)`
Checks whether the "otherclass" is a subclass of the given "superclass".
`static void`
`main(String[] args)`
Possible calls: weka.core.ClassDiscovery <packages>
Prints all the packages in the current classpath weka.core.ClassDiscovery <classname> <packagename(s)>
Prints the classes it found.

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### VERBOSE

public static final boolean VERBOSE
whether to output some debug information.

See Also:
  - Constant Field Values

## Constructor Details

### ClassDiscovery

public ClassDiscovery()

## Method Details

### isSubclass

public static boolean isSubclass(String superclass, String otherclass)
Checks whether the "otherclass" is a subclass of the given "superclass".

Parameters:
  `superclass` - the superclass to check against
  `otherclass` - this class is checked whether it is a subclass of the the superclass
Returns:
  TRUE if "otherclass" is a true subclass

### isSubclass

public static boolean isSubclass(Class superclass, Class otherclass)
Checks whether the "otherclass" is a subclass of the given "superclass".

Parameters:
  `superclass` - the superclass to check against
  `otherclass` - this class is checked whether it is a subclass of the the superclass
Returns:
  TRUE if "otherclass" is a true subclass

### hasInterface

public static boolean hasInterface(String intf, String cls)
Checks whether the given class implements the given interface.

Parameters:
  `intf` - the interface to look for in the given class
  `cls` - the class to check for the interface
Returns:
  TRUE if the class contains the interface

### hasInterface

public static boolean hasInterface(Class intf, Class cls)
Checks whether the given class implements the given interface.

Parameters:
  `intf` - the interface to look for in the given class
  `cls` - the class to check for the interface
Returns:
  TRUE if the class contains the interface

### find

public static Vector find(String classname, String[] pkgnames)
Checks the given packages for classes that inherited from the given class, in case it's a class, or implement this class, in case it's an interface.

Parameters:
  `classname` - the class/interface to look for
  `pkgnames` - the packages to search in
Returns:
  a list with all the found classnames

### find

public static Vector find(String classname, String pkgname)
Checks the given package for classes that inherited from the given class, in case it's a class, or implement this class, in case it's an interface.

Parameters:
  `classname` - the class/interface to look for
  `pkgname` - the package to search in
Returns:
  a list with all the found classnames

### find

public static Vector find(Class cls, String[] pkgnames)
Checks the given packages for classes that inherited from the given class, in case it's a class, or implement this class, in case it's an interface.

Parameters:
  `cls` - the class/interface to look for
  `pkgnames` - the packages to search in
Returns:
  a list with all the found classnames

### find

public static Vector find(Class cls, String pkgname)
Checks the given package for classes that inherited from the given class, in case it's a class, or implement this class, in case it's an interface.

Parameters:
  `cls` - the class/interface to look for
  `pkgname` - the package to search in
Returns:
  a list with all the found classnames

### findPackages

public static Vector findPackages()
Lists all packages it can find in the classpath.

Returns:
  a list with all the found packages

### clearCache

public static void clearCache()
clears the cache for class/classnames relation.

### getRevision

public String getRevision()
Returns the revision string.

Specified by:
  `getRevision` in interface `RevisionHandler`
Returns:
  the revision

### main

public static void main(String[] args)
Possible calls:

- weka.core.ClassDiscovery <packages>
  Prints all the packages in the current classpath
- weka.core.ClassDiscovery <classname> <packagename(s)>
  Prints the classes it found.

Parameters:
  `args` - the commandline arguments