精华内容
下载资源
问答
  • I've read posts about why you can't have a (Edit -- generic) (which use that type parameter from the generic class) static method in a generic class, but why can you then use static generic methods in...

    I've read posts about why you can't have a (Edit -- generic) (which use that type parameter from the generic class) static method in a generic class, but why can you then use static generic methods in non generic classes? I don't see the why the second is allowed, but I kinda understand why the first isn't.

    解决方案

    why you can't have a (Edit -- generic) (which use that type parameter from the generic class) static method in a generic class

    The reason for this is simple: The type parameter is not associated with the class but with instances of the class.

    I.e., you can't do

    class Test {

    public static void sayHello(T t) { // T for which instance?!

    System.out.println("Hello");

    }

    }

    why can you then use static generic methods in non generic classes?

    Why wouldn't you? A generic method takes the type parameter, so it doesn't matter if it's static or not, or if the class it's in is generic or not etc.

    This for instance compiles fine:

    class Test {

    public static void sayHello(T t) {

    System.out.println("Hello " + t);

    }

    }

    And you'd call the method like this:

    Test.sayHello("some argument");

    ^^^^^^^^

    type parameter provided at the method-call: no instance required.

    展开全文
  • 如果被方法是用,那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。为了让不同的方法可以操作不同类型,而且类型还不确定。那么可以将泛型定义在方法上。泛型类class Demo{public void show...

    泛型类定义的泛型,在整个类中有效。如果被方法是用,那么

    泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。

    为了让不同的方法可以操作不同类型,而且类型还不确定。那么

    可以将泛型定义在方法上。

    泛型类

    class Demo

    {

    public void show(T t)

    {

    System.out.println("show: "+t);

    }

    public void print(T t)

    {

    System.out.println("show: "+t);

    }

    }

    class GenericDemo4

    {

    public static void main(String[] args)

    {

    Demod = new Demo();

    d.show(new Integer(4));

    Demod1 = new Demo();

    d1.print("haha");

    }

    }

    结果:

    show: 4

    show: haha

    泛型方法

    class Demo

    {

    public void show(T t)

    {

    System.out.println("show: "+t);

    }

    public void print(Q q)

    {

    System.out.println("print:"+q);

    }

    }

    class GenericDemo4

    {

    public static void main(String[] args)

    {

    Demo d = new Demo();

    d.show("hello boy!");

    d.print("Alex i love you !");

    }

    }

    结果:

    show: hello boy!

    print:Alex i love you !

    同时定义泛型类和泛型方法

    class Demo

    {

    public void show(T t)

    {

    System.out.println("show: "+t);

    }

    public void print(Q q)

    {

    System.out.println("print:"+q);

    }

    }

    class GenericDemo4

    {

    public static void main(String[] args)

    {

    Demo d = new Demo();

    d.show("hello boy!");

    d.print("Alex i love you !");

    d.print(5);

    d.print("heiei");

    }

    }

    结果:

    show: hello boy!

    print:Alex i love you !

    print:5

    print:heiei

    特殊之处:

    静态方法不可以访问类上定义的泛型

    如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。

    class Demo

    {

    public void show(T t)

    {

    System.out.println("show: "+t);

    }

    public void print(Q q)

    {

    System.out.println("print:"+q);

    }

    public static void method(W t)

    {

    System.out.println("method: "+t);

    }

    }

    class GenericDemo4

    {

    public static void main(String[] args)

    {

    Demo d = new Demo();

    d.show("hello boy!");

    d.print("Alex i love you !");

    d.print(5);

    d.print("heiei");

    Demo.method("hihi");

    }

    }

    结果:

    show: hello boy!

    print:Alex i love you !

    print:5

    print:heiei

    method: hihi

    泛型定义在接口上

    interface Inter

    {

    void show(T t);

    }

    //第一种

    class InterImpl implements Inter

    {

    public void show(String t)

    {

    System.out.println("show :"+t);

    }

    }

    /*第二种

    class InterImplimplements Inter

    {

    public void show(T t)

    {

    System.out.println("show :"+t);

    }

    }

    */

    class GenericDemo5

    {

    public static void main(String[] args)

    {

    /*

    InterImpl i = new InterImpl();

    i.show(4);

    */

    InterImpl i = new InterImpl();

    i.show("haha");

    }

    }

    结果:

    show :haha

    第一种相对来说就比较死,固定为String类型了。而第二种可以自己定义。

    展开全文
  • 前言:当工具类对多个模型类进行排序,比较等操作的时候,需要书写大量重复代码,因为懒人总要想怎么省事的,所以考虑使用泛型这个玩意简化代码案例:当前存在两个模型类,Fruit和Person,他们都需要排序方法而且...

    前言:当工具类对多个模型类进行排序,比较等操作的时候,需要书写大量重复代码,因为懒人总要想怎么省事的,所以考虑使用泛型这个玩意简化代码

    案例:当前存在两个模型类,Fruit和Person,他们都需要排序方法而且业务逻辑各不相同,因此需要分别写两个排序方法,但因为排序相同的地方太多,唯一的区别就是判断两个对象的大小关系,于是在此做简化操作。

    执行步骤:

    1、编写模型类接口 interface Model

    public interface Model {

    public int compareTo(T model);

    }

    这里仅需要定义一个比较的方法

    2、编写Person类 class Person

    public class Person implements Model {

    private String name;

    public Person(String _name) {

    this.name = _name;

    }

    @Override

    public int compareTo(Person _person) {

    return this.name.compareToIgnoreCase(_person.name);

    }

    }

    Fruit的代码我就不放上来了,因为为了举例我这俩的比较方法写的是一样的,但是实际业务代码可能是不一样的

    3、编写工具类 class Sort

    public class Sort {

    public static > void sort(List list) {

    for (int i = 0; i < list.size() - 1; i++) {

    for (int j = i; j < list.size(); j++) {

    if (list.get(i).compareTo(list.get(j)) > 0) {

    T swap = list.get(i);

    list.set(i, list.get(j));

    list.set(j, swap);

    }

    }

    }

    }

    }

    随便找了个排序算法就套进去了

    然后就是主函数的调用

    public class Main{

    public static void main(String[] args){

    LinkedList list = new LinkedList<>();

    list.add(new Person("admin"));

    list.add(new Person("root"));

    list.add(new Person("huawei"));

    list.add(new Person("cisco"));

    Sort.sort(list);

    for (Person item : list) {

    System.out.println(item.toString());

    }

    }

    }

    4、Fruit类只要按照Person类一样实现Model的compareTo方法就可以使用Sort.sort方法进行排序了

    后记:最开始我的想法是写个Model接口,在接口中写一个compareTo方法,然后形参类型不知道咋写了

    如果写Model的话,Person实现compareTo方法的时候形参类型也肯定是Model

    我这块的逻辑比较简单,用name字段进行比较,如果在Model接口加上getName方法后,怎么看都不舒服

    Model类不一定都有name字段,而且这样Person类就可能会与Fruit类进行比较

    虽然可以在逻辑上不这么搞,但是怎么都看得难受啊,于是就想到用泛型搞这玩意

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • java静态方法使用泛型

    2021-03-05 23:52:05
    用法 import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; public class StaticMethod { public static void main(String[] args) { System....

    用法 import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; public class StaticMethod { public static void main(String[] args) { System.out.println(test("aaaaa")); //aaaaa 基本用法 System.out.println(test1("aa").get(0).equals("aa")); //true 用于内部包装 System.out.println(test2(new HashSet(), Collection.class).size()); //0 用于强制转换类型 System.out.println(test3("bbbbb")); //bbbbb 装神弄鬼 } public static T test(T obj){ return obj; } public static List test1(T obj){ List list = new ArrayList(); list.add(obj); return list; } public static T test2(Object str, Class obj){ return (T)str; } public static B test3(B obj){ return obj; } } 原文地址:https://blog.csdn.net/m18870420619/article/details/79929316

    展开全文
  • 众所周知,HttpClient我们通常会把他封装成一个工具类,工具类应保持开闭原则(虽然这里只是一个简单的工具类,没有使用设计模式,嘿嘿嘿),所以这就否定了在工具类中单独加一个方法来适应返回值为JSONArray....
  • 返回类型的静态方法中的泛型似乎与继承相处得不好.请看下面的代码:class ClassInfo {public ClassInfo(Class clazz) {this(clazz,null);}public ClassInfo(Class clazz, ClassInfo super C> superClassInfo) {}}...
  • Java静态泛型方法

    2021-03-11 10:59:35
    下面代码演示了 静态泛型方法怎么写, 数组分割工具类,兼容任何数据类型 ```java package com.freestyle.common.utils; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java...
  • 前言:当工具类对多个模型类进行排序,比较等操作的时候,需要书写大量重复代码,因为懒人总要想怎么省事的,所以考虑使用泛型这个玩意简化代码案例:当前存在两个模型类,Fruit和Person,他们都需要排序方法而且...
  • 1.泛型方法的定义和语法 1.1 定义 泛型方法 是在调用方法的时候指明泛型的具体类型。 【泛型方法 能够使方法独立于类的处理指定的类型。... 表示在方法可以使用声明的泛型类型。 与泛型类相同,泛型标识符可以是任意类
  • 我有一个课程如下:public class MyConverter {public T convert (Object o,String typeidentifier,T... do some conversions such as a java array to an ArrayList or vice versa... based on a typeidentifier Sy...
  • 这就是我所得到的: public class Node { // instance variables ... } 我的问题真的只是关于泛型的语法以及静态工厂方法的语法.我真的不明白为什么我们把之前返回类型的方法声明.有没有类型转换?任何帮助将不胜感激!
  • 本篇文章帮大家学习java泛型不能使用静态域,包含了Java泛型不能使用静态使用方法、操作技巧、实例演示和注意事项,有一定的学习价值,大家可以用来参考。使用泛型时,类型参数不允许为静态(static)。由于静态变量...
  • Java泛型该怎么使用

    2021-03-01 07:45:31
    动漫人物具体使用方法~1、定义泛型类在定义带泛型的类时,在紧跟类命之后的 < >内,指定一个或多个泛型的名字,同时也可以对泛型的取值范围进行限定,多个泛型之间用,号分隔。定义完泛型后,可以在定义位置...
  • 泛型也可以僅定義在靜態方法上,舉例而言,在定義與使用泛型中自定義過支援泛型的ArrayList,如果現在想寫個asArrayList方法,可指定不定長度引數,將之轉換為ArrayList,則可以如下:packagecc.openhome;...
  • 泛型and静态方法

    2021-11-22 10:23:20
    泛型类的静态方法 v.s. 静态泛型方法
  • 一、泛型的简介1、为什么要使用泛型?一般使用在集合上,比如现在把一个字符串类型的值放入到集合里面,这个时候,这个值放到集合之后,失去本身的类型,只能是object类型。这时,如果想要对这个值进行类型转换,很...
  • Java泛型 与 C++ 模板 : Java 中的泛型 , 是仿照 C++ 中的模板开发的 , 目的是让开发者可以写出通用,灵活的代码 。 伪泛型 : Java中的泛型 , 是伪泛型 , Java 泛型开发好之后 , 在编译阶段就将泛型相关的信息消除了 ...
  • 1. 概述泛型java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递...
  • 本文实例讲述了Java泛型类与泛型方法的定义。分享给大家供大家参考,具体如下:Java泛型类的定义一 点睛泛型类定义的语法如下:[访问修饰符] class 类名称 泛型类的主要作用在于类被实例化后,传入具体的类型参数,...
  • Java泛型使用

    2021-02-27 16:37:55
    泛型的定义:泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时(例如,继承或实现这个接口,用这个类型声明变量、创建对象时)确定(即...
  • 一、泛型简介、 二、泛型类、 三、泛型方法、 四、静态方法泛型、 五、泛型类与泛型方法完整示例、
  • Java 泛型

    2021-03-15 11:08:57
    泛型入门编译时不检查类型的异常public class ListErr{public static void main(String[] args){// 创建一个只想保存字符串的List集合List strList = new ArrayList();strList.add("布达佩斯");strList.add("布拉格...
  • 可以在非静态方法声明中使用泛型类型指定的类型参数。示例以下代码显示如何为方法m1()定义新的类型参数V。新类型参数V强制将方法m1()的第一个和第二个参数必须为相同类型。第三个参数必须与类型T相同,这是类实例...
  • 泛型方法 泛型方法就是要在权限符和返回值之间声明泛型,通常用L、V、E、T、K等字母,然后就可以在这个方法的内部将其看作一种方法类型了 ...静态方法不能直接使用类定义的泛型,也就是说如果要在静态方法使用
  • 1、泛型是什么 首先告诉大家ArrayList就是泛型。那ArrayList能完成哪些想不到的功能呢?先看看下面这段代码: ArrayList<String> strList = new ArrayList<String>(); ArrayList<Integer> int...
  • 本文参考java 泛型详解、Java中的泛型方法java泛型详解1. 概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 80,671
精华内容 32,268
关键字:

java泛型使用静态方法

java 订阅