Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对象函数和泛型_Java_Function_Object_Generics - Fatal编程技术网

Java 对象函数和泛型

Java 对象函数和泛型,java,function,object,generics,Java,Function,Object,Generics,作为家庭作业,我需要重新构造教科书中的代码。目标是使用findMax方法和函数对象技术,找到字符和字符串数组的“findMax”,findMax将返回字母表中最后一个字符,而对于字符串,它将返回以字母表中最后一个字母开头的字符串,忽略大小写敏感度。我的问题是我是否做对了(我显然有些怀疑)?我不想要错误或警告。我也不想复制和粘贴答案。我只是想更好地了解我如何做到这一点。代码如下: import java.util.Comparator; public class Lab1q6 { public

作为家庭作业,我需要重新构造教科书中的代码。目标是使用findMax方法和函数对象技术,找到字符和字符串数组的“findMax”,findMax将返回字母表中最后一个字符,而对于字符串,它将返回以字母表中最后一个字母开头的字符串,忽略大小写敏感度。我的问题是我是否做对了(我显然有些怀疑)?我不想要错误或警告。我也不想复制和粘贴答案。我只是想更好地了解我如何做到这一点。代码如下:

import java.util.Comparator;

public class Lab1q6 {
public static <AnyType extends Comparable<? super AnyType>>
AnyType findMax( AnyType [ ] arr, Comparator<? super AnyType> cmp ){
    int maxIndex = 0;

    for(int i=1; i < arr.length; i++)
        if( cmp.compare( arr[ i ], arr[ maxIndex ] ) > 0 )
             maxIndex = i;
    return arr[ maxIndex ];

}
public static class CaseInsensitiveCompare<AnyType extends Comparable<AnyType>> implements Comparator<AnyType>
{
    public int compare( String lhs, String rhs )
    { return lhs.compareTo( rhs ); }

    @Override
    public int compare(AnyType o1, AnyType o2) {
        return o1.compareTo( o2 );

    }
}

@SuppressWarnings({ "unchecked", "rawtypes" })
    public static void main(String[] args) {
        String [] array = {"owl", "zebra", "GATOR", "Ant", "Reindeer"};
        Character [] arr = {'C', 'Z', 'A', 'R', 'S'};

        System.out.println( findMax(arr, new CaseInsensitiveCompare()));
        System.out.println( findMax(array, new CaseInsensitiveCompare()));

}

}
import java.util.Comparator;
公共类Lab1q6{

公共静态泛型类型通常定义为一个字母(例如T)。AnyType看起来像一个真实的类名。请遵守约定。另外,第一个compare()有什么用方法,为什么这样命名这个类,因为它根本不进行不区分大小写的比较?这个比较器不是您想要的。您需要两个单独的比较器类:一个以不区分大小写的方式比较字符实例,另一个以ca中的第一个字符比较字符串实例se麻木不仁。@jbnize我同意你的约定,但是,作业要求我从书中复制粘贴,然后对其进行操作。这是我使用“AnyType”的唯一原因尽管我可能更喜欢。我已经更改了代码,这样类现在只有一个比较,参数是AnyType lhs,AnyType rhs,使用compareTo方法。从技术上讲,它可以工作,但我有两个类型安全警告和一个原始类型警告。