How can I apply the <T> class to what acts like the <T extends Foo> class at runtime?
I have a class that looks like this:
class FooClassAnalyser<T extends Foo> extends ClassAnalyser<T>
(where ClassAnalyseris the abstract base class for a number of specific implementations, and FooClassAnalyseris the specific implementation, specialized for the case when it Tcontinues Foo). It has a constructor that looks like this:
FooClassAnalyser(Class<T> classToAnalyse)
In another class, I have a static factory method for ClassAnalyserthat calls the appropriate constructor depending on the type classToAnalyse:
static <U> ClassAnalyser<U> constructClassAnalyser(Class<U> classToAnalyse)
I want to check if there is U instanceof Foo, then build FooClassAnalyserand return it, if any.
Java. , U . , classToAnalyse , , U instanceof Foo :
if (Foo.class.isAssignableFrom(classToAnalyse))
, instanceof " " Java-. , classToAnalyse FooClassAnalyser , Java , classToAnalyse Class<U extends Foo>.
, , , classToAnalyse a Class<? extends Foo> ( , Java , ). , , new FooClassAnalyser FooClassAnalyser<?> . , , , ClassAnalyser<U>, Java , classToAnalyse , Class - (, , Class<U>); , , Java, - FooClassAnalyser<?>, , FooClassAnalyser<U>, , , . , , .
, , (, Class<U extends Foo> , Java ). , U ; , , Class<U> .
?
,
instanceof" " Java. ,classToAnalyseFooClassAnalyser, Java ,classToAnalyseClass<U extends Foo>.
, Class<U> constructClassAnalyser. , ; , U constructClassAnalyser Class<U>.
static <U> ClassAnalyser<U> constructClassAnalyser(U objectToAnalyse)
, objectToAnalyse#getClass; instanceof, , U extends Foo, objectToAnalyse instanceof Foo true, .