Tag: 返回类型

Java未选中覆盖返回类型

我有一个包含以下组件的项目: public abstract class BaseThing { public abstract ThingDoer getThingDoer(); } public class SomeThing extends BaseThing { public ThingDoer getThingDoer() { return Things.getSomeThingDoer(); } } public class SomeOtherThing extends BaseThing { public ThingDoer getThingDoer() { return Things.getSomeOtherThingDoer(); } } public class Things { public ThingDoer getSomeThingDoer { return getThingDoer(SomeThing.class); } public ThingDoer getSomeOtherThingDoer { return […]

Java方法中的动态返回类型

我在这里多次看过类似这样的问题,但有一个很大的区别。 在其他问题中,返回类型由参数确定。 我想要/需要做的是通过byte[]的解析值确定返回类型。 根据我的收集,以下内容可行: public Comparable getParam(String param, byte[] data) { if(param.equals(“some boolean variable”) return data[0] != 0; else(param.equals(“some float variable”) { //create a new float, f, from some 4 bytes in data return f; } return null; } 我只想确保在我搞砸之前有机会工作。 提前致谢。

带有generics返回类型的方法中的Java编译错误

我无法解释为什么这个简单的代码不能编译。 class Foo { T method() { return this; } } 错误是: Type mismatch: cannot convert from Foo to T 为什么不? T被定义为Foo或其子类。 在相关的说明中,等效的Scala示例会进行编译,因此Java错误不是由于JVM的限制。 class Foo { def method[T <: Foo] = this } 更新:我在Java Tutorials中找到了关于generics方法的简明建议。 通用方法允许使用类型参数来表示方法和/或其返回类型的一个或多个参数的类型之间的依赖关系。 如果没有这种依赖关系,则不应使用通用方法。 我的解释是,通用方法仅适用于两种情况。 两个(或更多)方法的参数类型之间存在依赖关系。 方法的返回类型与其参数类型中的一个(或多个)之间存在依赖关系。 显然,有问题的简单代码在其参数和返回类型之间没有依赖关系,因为没有参数。 因此,通用方法是不合适的。 更新2:现在我已经意识到这一点,我在开源项目中注意到这种反模式的例子。 co.cask.cdap.api.data.DatasetContext.getDataset() org.kitesdk.data.Datasets.load() com.fasterxml.jackson.databind.ObjectMapper.valueToTree() 更新3:我想我已经找到了一个不涉及多个参数或返回类型的generics方法的要求。 多重inheritance似乎是Java教程中上述规则的一个例外。 void method(T foobar) { // Call Foo […]

为什么int类型方法允许字符类型作为返回值?

这是我的代码,但我没有得到int getValue()方法如何接受char类型作为返回值。 它是如何工作的? 请问任何人可以解释一下这种方法是如何工作的? public class CharToInteger { private static Scanner input; public static int getValue(char character){ return character; } public static void main(String[] args) { input = new Scanner(System.in); System.out.println(“Enter a character to get value of it:”); String inputString=(String) input.next(); char inputCharacter=inputString.charAt(0); System.out.println(getValue(inputCharacter)); } } 提前致谢 :)

返回java中iterator()方法的类型

我是Java的新手,也是学习过程中的新手。 我需要一个有效理论支持的以下问题的答案。 考虑以下行 – Iterator itr = al.iterator(); 其中al是ArrayList(class)类型的一些集合对象。 我想知道这里的返回类型是什么 al.iterator() 它不一定是原始数据类型,然后它可以是一个对象 ,但由于每个对象都属于一个类,因此它属于哪个类 。 文档和书籍等说它有返回类型的迭代器。 但Iterator是一个界面。 另一方面,我们说接口不能有直接对象。 虽然接口变量可以引用实现它的类或类的对象。 – 所以上面的语法是正确的(因为Iterator变量itr可以用来引用实现它的某个类的对象)。 但在不动产中它是哪一类的对象? 并且可以用该类的引用变量替换itr将不会导致错误(我已经尝试用上面的行中的Array 。类的ref。变量替换itr ,但这会导致错误)。 我也经常在genericsforms中使用这种语法,但不知道这背后的理论。 我想我在这里缺乏一个非常基本的概念。 请纠正。

从Java中的函数返回多个值

如何从Java中的函数返回多个值? 任何人都可以使用元组提供示例代码吗? 我无法理解元组的概念。 public class Tuple{ public static void main(String []args){ System.out.println(f()); } static Pair f(){ return new Pair(“hi”,3); } public class Pair { public final String a; public final Integer b; public Pair(String a, Integer b) { this.a = a; this.b = b; } } } 上面的代码有什么错误?

返回带generics的对象子类

使用抽象类,我想定义一个为子类返回“this”的方法: public abstract class Foo { … public T eat(String eatCake) { … return this; } } public class CakeEater extends Foo {} 我希望能够做到这样的事情: CakeEater phil = new CakeEater(); phil.eat(“wacky cake”).eat(“chocolate cake”).eat(“banana bread”); 可以说香蕉面包会抛出IllegalArgumentException,并显示消息“Not a cake!”