Tag: 重载

方法是否重载了一种多态?

我正在研究静态和动态多态,并得到这些链接: http://guruzon.com/1/oop-concepts/polymorphism/what-is-polymorphism-example-tutorial-uml-diagram-notation http://www.coderanch.com/t/379004/java/java/static-polymorphism-dynamic-polymorphism http://javarevisited.blogspot.in/2011/08/what-is-polymorphism-in-java-example.html 在所有这些链接中,有人说过载是多态的一个例子,然后我遇到了另外两个地方,据说重载与多态无关,链接是: 方法重载是多态吗? Head First Java第2版第7章(inheritance和多态)上一主题:重载方法 。 现在我无法弄清楚它是否是一种多态性,如果它不是OOP中有什么称为静态多态的话?

未在Web服务器中运行时,库中的Java重载方法失败

我正在尝试编写一个小型库,可以在标准的Java应用程序中使用,也可以作为servlet的一部分使用。 我已经定义了几个重载方法,如下所示: // imports etc. public ExampleLibrary { /** * This one is meant to be used by a J2SE app */ public String processData(Map headers) throws MyException { // process // return result } /** * This one is meant to be used by a servlet */ public String processData(HttpServletRequest request) throws MyException { […]

Java注释重载?

在我的项目中,我已经定义了类似于以下内容的注释: (省略@Retention , @Target为了简洁) public @interface DecaysTo { String[] value(); } 自从最初编写它以来,我们的需求已经改变,我现在已经定义了一个枚举,我希望能够使用它来代替字符串: public enum Particle { ELECTRON, ANTIELECTRON, NEUTRINO, ANTINEUTRINO, … } 为了避免更新此批注的每个实例,我希望能够使用 String 或 enum Particle的成员构造批注, 而无需更新此批注的每个实例以指定属性。 但是,由于我们定义了注释的属性,而不是构造函数,因此似乎不可能重载它。 // In a perfect world, either of these would work … public @interface DecaysTo { String[] value(); Particle[] value(); } @DecaysTo({“Electron”, …}) @DecaysTo({Particle.ELECTRON, …}) // without […]

重载函数int …和long …同时

我想创建两个函数 long min(long…); int min(int…); 但是当我尝试调用第二个即min(1, 5)我得到了模糊的方法调用 除了重命名之外还有解决方法吗?

Java:覆盖或重载方法?

我在一个名为“PlaceParser”的类中有一个extends “ModelParser”的方法: protected Place parseModel(JSONObject element) … Place是Model的子类。 是否应将@Override注释添加到上面的代码中? 由于该方法具有不同的返回类型,这仍然算作覆盖具有相同名称和参数的基类方法/返回类型是否改变了“签名”? “ModelParser”方法看起来像“ModelT”也扩展了“Model”: protected abstract ModelT parseModel(JSONObject element) throws JSONException; 更新@Jon Skeet: 基类声明如下: public abstract class ModelParser { 我之前没有看到过类的样式声明。

Hamcrest匹配器的重载冲突

匹配器IsIterableContainingInAnyOrder对静态工厂方法containsInAnyOrder有两个重载(两者都有返回类型Matcher<java.lang.Iterable> ): containsInAnyOrder(java.util.Collection<Matcher> itemMatchers) containsInAnyOrder(Matcher… itemMatchers) 现在考虑以下程序: import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder; import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.assertThat; import java.util.Arrays; import org.junit.Test; public class SomeTest { @SuppressWarnings(“unchecked”) @Test public void foo() { assertThat(Arrays.asList(“foo”,”bar”), containsInAnyOrder(equalTo(“foo”), equalTo(“bar”))); } } 当它作为JUnit测试执行时,它会按预期传递。 它使用上面显示的containsInAnyOrder的第二个重载。 现在,当我将断言更改为this时(它与第一次重载的文档中给出的示例完全匹配): assertThat(Arrays.asList(“foo”,”bar”), containsInAnyOrder(Arrays.asList(equalTo(“foo”), equalTo(“bar”)))); ^^^^^^^^^^^^^^ 它不再编译,因为现在编译器推断出containsInAnyOrder的返回类型 Matcher<Iterable<? extends List<Matcher>>> 似乎编译器仍然选择第二个重载。 如果它使用了第一个,那么示例应该有效。 为什么它会像这样? 我怎样才能做到这一点? 我正在使用Hamcrest 1.3和Oracle Java 1.7。

这是重载,方法在不同的类和不同的签名中具有相同的名称吗?

如果我在Java中有以下代码: class A { public int add(int a , int b) { return (a+b); } } class B extends A { public float add(float a , float b) { return (a+b); } 在这种特殊情况下,子类并不完全覆盖基类的add函数,因为它们具有不同的签名,并且只有当它们在同一范围内时才会出现重载的概念。 那么,函数add(float , float)在子类B被视为一个全新的函数,并且重载和重写的概念不适用于它吗? 它是否使用“静态绑定”或“动态绑定”?

Java,静态方法绑定和generics都汇总了一些方法重载

所以标题暗示我的问题有点奇怪和复杂。 我知道我要做的事情打破了“好”编程实践的所有规则,但是嘿,如果我们不活一点,生活会怎样? 所以我做的是创建以下程序。 (这不是一个更大的实验的一部分,真正尝试和理解generics,所以一些function名称可能有点乱序) import java.util.*; public class GenericTestsClean { public static void test2() { BigCage animalCage=new BigCage(); BigCage dogCage=new BigCage(); dogCage.add(new Dog()); animalCage.add(new Cat()); animalCage.add(new Dog()); animalCage.printList(dogCage); animalCage.printList(animalCage); } public static void main(String [] args) { //What will this print System.out.println(“\nTest 2”); test2(); } } class BigCage extends Cage { public static void printList(List […]

相互之间是静态和非静态的重载

这两个function是否过载 class yogi{ public static void fun(){ System.out.println(“Fun”); } public void fun(int a,int b){ System.out.println(“int”); } }

多态性 – 重载/覆盖

我知道这个问题已经在StackOverflow上完成,并且已经有很多问题已经发布。 我可能已经阅读了它们中的每一个但是,有这个令人唠叨的疑问 :我认为我理解重载很好,并且覆盖。 让我变形的是多态性。 例如, 这个问题的接受答案用shape.Draw()解释了这一点。 我很困惑这与Overriding有什么不同(其他时候我对它与Overloading的不同之处感到困惑)。 此外 – 多态性本质上是指从抽象类派生出来的吗? (我想我几乎所有关于这个主题的答案都使用了一个抽象的动物类,让一只猫和一只狗喵喵叫/吠:) 总之 ,我的问题是: 什么是多态性wrt重载和覆盖? 有人可以在没有抽象类的情况下解释多态性 – 谢谢! 重载/覆盖不是多态的子类型,是吗? 编辑添加第3个问题并修改第2个问题。