gpt4 book ai didi

Java 'T extends' 'hello-world' 无法编译

转载 作者:行者123 更新时间:2023-12-01 14:47:51 24 4
gpt4 key购买 nike

class root { public void say() { System.out.print("hello\n"); }}
class A extends root { @Override public void say() { System.out.print("world A\n"); }}
class B extends root { @Override public void say() { System.out.print("world B\n"); }}
//abstract class C extends <T> { public void go() { say(); say(); }}
class C <T extends root> { public void go() { say(); say(); }}

public class Template { public static void main(String[] args) {
C c = new C<A>(); c.say();
D d = new C<B>(); d.say();
}}

我需要类 C 来扩展 A 和 B。(在现实生活中,它们将是水平(A)和垂直(B) ScrollView )。但这不会编译。我浏览了您可以在网络上找到的数十个示例,但这两个示例都不是可编译的程序,它们只会让我越来越困惑。请帮忙!

最佳答案

C 类没有 say 方法,因此代码永远无法编译。另外,看起来没有 D 类。

为了使其编译,C 应该扩展 rootC 应该有一个 say 方法。

有问题的代码行:

class C <T extends root> { public void go() { say(); say(); }}

C c = new C<A>(); c.say();

您可以将此代码修改为使其运行:

class C <T extends root> {

T element;

public C(T element) { this.element = element; }

public go() { element.say(); }
}

//...

C c = new C<A>(new A()); c.go();

Perception's comment 中所述,您应该检查 Generics Oracle 提供的教程可帮助您更好地了解此事。

关于Java 'T extends' 'hello-world' 无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15238418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com