草庐IT

compiler-interface

全部标签

java - getMethods() 返回我在实现通用接口(interface)时没有定义的方法

一个简单的界面:interfaceFoo{voidmyMethod(Stringarg);}classFooImplimplementsFoo{voidmyMethod(Stringarg){}publicstaticvoidmain(String[]args){Classcls=FooImpl.class;try{for(Methodmethod:cls.getMethods()){System.out.print(method.getName()+"\t");for(ClassparamCls:method.getParameterTypes()){System.out.print

java - 如何在运行时替换对象组合的实现(接口(interface)继承)

我遇到了以下几点对象组合相对于类继承的优势。但是我经常在很多文章中看到下面这句话Inobjectcomposition,functionalityisacquireddynamicallyatrun-timebyobjectscollectingreferencestootherobjects.Theadvantageofthisapproachisthatimplementationscanbereplacedatrun-time.Thisispossiblebecauseobjectsareaccessedonlythroughtheirinterfaces,sooneobject

java - 继承与接口(interface)

我一直在尝试理解涉及接口(interface)时的继承。我想知道子类是如何创建的,如果它们遵循以下内容:例如,假设我有:实现接口(interface)I的父类(superclass)和几个扩展父类(superclass)A的子类我的问题我是否必须在所有扩展A的子类中提供接口(interface)方法“q和r”的实现?如果我不在子类中提供接口(interface)的实现,我是否必须将该子类设为抽象类?任何子类都可以实现I吗?例如C类扩展A实现I,这可能吗?即使它已经扩展了实现I的父类(superclass)?假设我没有从接口(interface)I提供方法r的实现,那么我将不得不创建父类

java - 实现相同接口(interface)的类之间的关系

我几乎是java初学者,我来stackoverflow论坛问一个简单的问题。我已经在SO上检查过类似的问题,但没有找到所需的答案,链接:Isthereanyrelationbetweentheclassthatimplementsinterfaceandthatinterface?我们知道如果Cat扩展了Animal,这里就存在关系。所以猫是动物(但不一定是其他动物。动物也是狗..)。我们将这种关系称为“is-a”——继承。如果我们有另外两个类:Girl和Candy并且如果类Girl持有Candy的实例,那么我们将这种关系命名为“has-a”-composition,因为我们可以说Gi

java - Java 是否通过具有单个实现者标记为最终的接口(interface)来优化方法调用?

如果我有一个类的引用并在其上调用一个方法,并且该类或方法是最终的,我的理解是编译器或JVM会用更便宜的静态调度替换动态调度,因为它可以确定将调用哪个版本。但是,如果我有一个接口(interface)的引用,并且该接口(interface)当前只有一个实现者,并且该实现者是最终的或者该实现者中的方法是最终的,JVM可以在运行时计算出来并优化这些吗?电话? 最佳答案 (在此处插入Knuth关于优化的引述。)参见WikisHome>HotSpotInternalsforOpenJDK>PerformanceTechniques.Metho

java - 泛型与接口(interface)

我从Java1.4(以前的公司)过渡到Java1.6(新公司)。我观察到,在1.4中,大多数专有框架都是使用接口(interface)和模板模式定义的,而在1.6中,大多数框架都是围绕泛型定义的。虽然我仍在尝试掌握泛型,但我的问题是-这是一种正确的设计方法吗?接口(interface)使您的设计更加灵活/解耦。而泛型,实现类型安全并强制您传递特定类型的类。并没有真正帮助您的代码解耦。这个对吗?一个例子-publicMyWizardextendsSignupWizard{}相反,设计会更灵活,如果它是..publicinterfaceWizardable{publicSignableSe

java - 使用 Java Compiler API 无需安装 JDK

大家好我正在编写一些软件,允许用户为我的软件包中的特定用途创建他们自己的Java类。显然,我的软件需要能够调用Java编译器来编译用户生成的类,以便在我的程序中使用。但是,我不想要求用户下载并安装整个JDK,以便他们可以访问javacJava编译器。我知道在Jave6中有一个新的Java编译器API,但即便如此,只有JRE而不是JDK的用户在尝试实例化Java编译器工具时将得到一个空对象。那么,要让我的程序能够编译Java类,同时要求最终用户只在他们的机器上安装JRE,最好的方法是什么?如果这不可能,我需要在用户计算机上安装的最少一组库/jar文件是什么?我想另一种可能性是使用JWS(

java - 为什么不允许接口(interface)作为注解成员?

考虑这段代码:@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public@interfaceBar{Foofoo()defaultFooImpl.FooConstant;}编译器错误:annotationvaluenotofanallowabletype如果我将Foo替换为FooImpl,代码将被接受。这种行为的原因是什么? 最佳答案 IfIreplaceFoowithFooImplthecodeisaccepted.如果编译成功,我会感到非常惊讶,除非F

java - 如何实现通用接口(interface)的方法?

我有这个界面:publicinterfaceParsableDTO{publicTparse(ResultSetrs)throwsSQLException;}在某种dto类中实现,在另一个类中实现此方法:public>ListgetParsableDTOs(Stringtable,Classdto_class){Listrtn_lst=newArrayList();ResultSetrs=doQueryWithReturn(StringQueryComposer.createLikeSelectQuery(table,null,null,null,true));try{while(rs

java - Jackson 仅序列化接口(interface)方法

我有一个对象A和一些方法ma,mb,mc并且这个对象实现了一个接口(interface)B只有ma和mb。当我序列化B时,我希望只有ma和mb作为json响应,但我也得到mc.我想自动化此行为,以便我序列化的所有类都基于接口(interface)而不是实现进行序列化。我应该怎么做?例子:publicinterfaceInterf{publicbooleanisNo();publicintgetCountI();publiclonggetLonGuis();}实现:publicclassImplimplementsInterf{privatefinalStringpatata="Pata