的返回类型是什么? S的意思是?

发布于 2024-12-18 09:24:27 字数 257 浏览 2 评论 0原文

public <S extends CharSequence> S foo(S s){
    return null;
}

我在 OCJP 问题之一中找到了这种方法。但我发现很难理解返回类型 到底是什么。 S 的意思是。有Java知识的人可以帮我解释一下这是什么意思吗?

public <S extends CharSequence> S foo(S s){
    return null;
}

I found this method in one of the OCJP question. But I find it difficult to understand what exactly the return type <S extends CharSequence> S means. Could someone having knowledge in Java explain me what it means?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

你列表最软的妹 2024-12-25 09:24:27

定义意味着S是扩展或实现CharSequence的类型。

请注意 foo 之前和之后存在 S。这意味着 foo 返回一个扩展或实现 CharSequence 的类型,并接受相同类型的参数。

The definition <S extends CharSequence> means that S is a type that extends or implements CharSequence.

Note the presence of S before foo and after it. This means that foo returns a type that either extends or implements CharSequence, and accepts an argument of the same type.

度的依靠╰つ 2024-12-25 09:24:27

我的意思是方法 foo 接受 CharSequence (或其子类或实现类)作为参数,并返回相同类型作为返回值。

例如,您可以调用这样的方法

CharSequence s = ...
CharSequence result = foo(s);

or

String s = ...
String result = foo(s);

StringBuffer s = ...
StringBuffer result = foo(s);

但是,它不允许您使用不匹配的返回和参数类型。这些都不行:

String s = ...
StringBuffer result = foo(s);

或者

StringBuffer s = ...
String result = foo(s);

I means that method foo takes a CharSequence (or it's subclass or implementing class) and as a parameter and returns the same type as return value.

For example you can call the method like this

CharSequence s = ...
CharSequence result = foo(s);

or

String s = ...
String result = foo(s);

or

StringBuffer s = ...
StringBuffer result = foo(s);

However, it does not allow you to use mismatching return and parameter types. These are not ok:

String s = ...
StringBuffer result = foo(s);

or

StringBuffer s = ...
String result = foo(s);
┾廆蒐ゝ 2024-12-25 09:24:27

S foo(S s) 表示 foo 方法采用 S 类型的参数,并将返回一个 S >。

此外,方法 foo 定义了您可以使用它的类型:S(您的模板化结果)是 CharSequence 的子类。

例如,您可以使用以下方式调用它:

foo("example")

这将返回一个 String (它是有效的,因为 StringCharSequence 的子类。

并且此特定实现在所有情况下都返回 null。

S foo(S s) means that the foo method takes a parameter of type S, and will return an S.

Also the method foo is defining which type you can use it for: S (your templated result) is a subclass of CharSequence.

For example, you can call it using:

foo("example")

And that will return a String (It's valid because String is a subclass of CharSequence.

And this specific implementation returns null in all cases.

鸢与 2024-12-25 09:24:27

该行内容如下:
方法 foo 将任何 S 类型的对象作为参数,并返回一个 S 类型的对象,假设 S 扩展了 CharSequence >。
如果您以 StringBuilder(扩展 CharSequence)为例并将其放入此上下文中,它将给出以下内容:

public StringBuilder foo (StringBuilder s) 

The line reads:
Method foo takes as a parameter any object of type S and returns an object of type S, given S extends CharSequence.
If you take StringBuilder (extends CharSequence) for example and put it in this context it will give the following:

public StringBuilder foo (StringBuilder s) 
情绪 2024-12-25 09:24:27

不是返回类型的一部分。它在泛型方法 foo 中引入了一个类型参数。这里 S 被引入作为由 CharSequence 限制的类型参数(上部)。 foo 接受一个 S 类型的参数也返回相同的结果。

<S extends CharSequence> is not a part the return type. It introduces a type parameter in your generic method foo. Here S is introduced as a type parameter (upper) bounded by CharSequence. foo takes a parameter of type S also returns the same.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文