Java 使用带有基元返回类型的泛型方法 公共类Util{ 公共静态布尔比较(对p1,对p2){ } }

Java 使用带有基元返回类型的泛型方法 公共类Util{ 公共静态布尔比较(对p1,对p2){ } },java,generics,Java,Generics,我知道为什么我们要使用Util,但是静态有什么用呢?我从。请帮我理解。将此分开是方法参数static是一个修饰符,它使方法成为“static”,即您可以在不创建对象的情况下调用它 只需阅读一些关于java、方法、类、静态方法等的内容。将这些内容分开是方法参数static是一个修饰符,它使方法成为“static”,即您可以在不创建对象的情况下调用它 只需阅读一些关于java、方法、类、静态方法等的内容。静态方法是单独调用的,而不引用Util类的任何实例。由于只有Util的实例绑定了类的类型参数,因

我知道为什么我们要使用
Util
,但是
静态
有什么用呢?我从。请帮我理解。

将此分开<代码>是方法参数
static
是一个修饰符,它使方法成为“static”,即您可以在不创建对象的情况下调用它

只需阅读一些关于java、方法、类、静态方法等的内容。

将这些内容分开<代码>是方法参数
static
是一个修饰符,它使方法成为“static”,即您可以在不创建对象的情况下调用它


只需阅读一些关于java、方法、类、静态方法等的内容。

静态方法是单独调用的,而不引用
Util
类的任何实例。由于只有
Util
的实例绑定了类的类型参数,因此
compare
中使用的类型参数没有绑定。因此,必须在每个调用站点调用类型推断机制来解析它们。这就是方法返回类型前面的
语法所表示的内容


请注意,实例方法也可以使用未绑定的类型参数,因此
static
不是问题的核心。碰巧大多数依赖类型推断的方法都是静态的。

静态方法是单独调用的,不引用
Util
类的任何实例。由于只有
Util
的实例绑定了类的类型参数,因此
compare
中使用的类型参数没有绑定。因此,必须在每个调用站点调用类型推断机制来解析它们。这就是方法返回类型前面的
语法所表示的内容


请注意,实例方法也可以使用未绑定的类型参数,因此
static
不是问题的核心。碰巧大多数依赖类型推断的方法都是静态的。

静态方法可以在类上调用,而无需实例化对象

偷自


通常,如果不先创建一个类的实例,就不能调用该类的方法。通过使用static关键字声明一个方法,您可以在不首先创建对象的情况下调用它,因为它成为一个类方法(即属于类而不是对象的方法)。

可以在类上调用静态方法,而无需实例化对象

偷自


通常,如果不先创建一个类的实例,就不能调用该类的方法。通过使用static关键字声明一个方法,您可以在不首先创建对象的情况下调用它,因为它成为一个类方法(即属于类而不是对象的方法)。static关键字与
Util
无关,只是将该方法设为类方法,因此,您不需要创建类的实例来调用该方法。

static关键字与
Util
无关,它只是将该方法设置为类方法,因此您不需要创建类的实例来调用该方法。

对于静态泛型方法,类型参数部分必须出现在方法的返回类型之前。这就是你只需要指定返回类型的原因。链接上的代码有
Util
,没有
。这是我特意添加的,目的是区分和澄清问题。感谢你的回答。对于静态泛型方法,类型参数部分必须出现在方法返回类型之前。这就是你只需要指定返回类型的原因。链接上的代码有
Util
,没有
。这是我故意添加的,目的是为了区分和澄清问题。谢谢你的回答。为什么我们需要添加静态布尔值,因为它与静态布尔值相同?不是方法参数。方法参数为
p1
p2
。是的,你知道这一点,但这会使答案变得不那么有用,因为对于一个还不知道这一点的初学者来说,答案并不清楚。@AlexR,谢谢你的回答。为什么我们需要添加静态布尔值,因为它与静态布尔值相同?不是方法参数。方法参数为
p1
p2
。是的,你知道这一点,但这会使答案变得不那么有用,因为对于一个还不知道这一点的初学者来说,答案是不清楚的。@AlexR,谢谢你的回答。
public class Util<K,V> {
    public static <K, V> boolean compare(Pair<K, V> p1, Pair<K, V> p2) {
    }
}