我声明一个类如下:publicclassSomeClassextendsAdditionalClass{...}这...SomeClassobject=newSomeClass();System.out.println(object.getSuperClass().getSimpleName());...产生“AdditionalClass”。什么方法调用或调用允许我询问该对象并得到“GenericClass”作为结果? 最佳答案 您必须获取ParameterizedType的数组(s)父类(superclass)。例如:SomeC
我知道默认情况下Java没有所谓的eval(我发音为“evil”)方法。这听起来像是一件坏事——知道你没有很多其他人拥有的东西。但更糟糕的是,似乎被告知您不能拥有它。我的问题是:它背后的可靠推理是什么?我的意思是,谷歌搜索只会返回大量旧数据和虚假原因——即使有我正在寻找的答案,我也无法从那些只是乱扔通用标记词的人那里过滤掉它。我对告诉我如何解决这个问题的答案不感兴趣;我可以自己做:使用Bean脚本框架(BSF)文件sample.py(在py文件夹中)内容:deffactorial(n):returnreduce(lambdax,y:x*y,range(1,n+1))和Java代码:Sc
我正在尝试编写一个方法,通过将字符串数组作为参数传递给该方法来执行另一个类的静态方法。这是我所拥有的:publicstaticvoidexecuteStaticCommand(finalString[]command,Classprovider){Method[]validMethods=provider.getMethods();StringjavaCommand=TextFormat.toCamelCase(command[0]);for(Methodmethod:validMethods){if(method.getName().equals(javaCommand)){try{
我正在学习反射(reflection)。当我执行以下代码时:packagemain;importjava.lang.reflect.Field;publicclassMain{publicstaticvoidmain(String[]args)throwsNoSuchFieldException,SecurityException{BasefirstBase=newBase();FieldfirstBaseField=firstBase.getClass().getDeclaredField("protectedBuffer");System.out.println(firstBase
Java的java.lang.Class类有一个getDeclaredFields方法,它将返回给定类中的所有字段。CommonLisp有类似的东西吗?在阅读了SuccessfulLisp,Chapter10(http://www.psg.com/~dlamkins/sl/chapter10.html)中尝试说明后,我遇到了一些有用的函数,例如describe、inspect和symbol-plist。但是它们都没有执行getDeclaredFields所做的事情。 最佳答案 您应该使用类槽和/或类直接槽(均来自CLOS元对象协议(
我正在尝试在运行时切换类加载器:publicclassTest{publicstaticvoidmain(String[]args)throwsException{finalInjectingClassLoaderclassLoader=newInjectingClassLoader();Thread.currentThread().setContextClassLoader(classLoader);Threadthread=newThread("test"){publicvoidrun(){System.out.println("running...");//approach1Cl
我正在尝试在Java中实现某种反射。我有:classP{doublet(doublex){returnx*x;}doublef(Stringname,doublex){Methodmethod;ClassenclosingClass=getClass().getEnclosingClass();if(enclosingClass!=null){method=enclosingClass.getDeclaredMethod(name,x);try{method.invoke(this,x);}catch(Exceptione){e.printStackTrace();}}}classoe
如何检查我安装的java中是否存在像javax.servlet.*这样的包? 最佳答案 Java只能告诉你它是否可以加载一个类。它无法告诉您包是否存在,因为不加载包,只加载类。唯一的方法是尝试从该包中加载一个类。例如,对于javax.servlet.*你可以这样做:try{Class.forName("javax.servlet.Filter");returntrue;}catch(ClassNotFoundExceptione){returnfalse;} 关于java-检查包是否存在
我需要确定表示接口(interface)的Class对象是否扩展了另一个接口(interface),即:packagea.b.c.d;publicInterfaceIMyInterfaceextendsa.b.d.c.ISomeOtherInterface{}根据thespecClass.getSuperClass()将为接口(interface)返回null。IfthisClassrepresentseithertheObjectclass,aninterface,aprimitivetype,orvoid,thennullisreturned.因此以下将不起作用。Classinte
假设我有一个java包commands,其中包含所有继承自ICommand的类,我能否以某种方式获取所有这些类?我正在锁定以下内容:Packagep=Package.getPackage("commands");Class[]c=p.getAllPackagedClasses();//notreal这样的事情可能吗? 最佳答案 这是一个基本示例,假设类不是JAR打包的://Prepare.StringpackageName="com.example.commands";List>commands=newArrayList>();UR