泛型问题求解

问题描述

classComByLenimplementsComparator<String>{publicintcompare(Strings1,Strings2){inttemp=s1.length()-s2.length();returntemp==0?s1.compareTo(s2):temp;}}classComByLen<String>implementsComparator<String>{publicintcompare(Strings1,Strings2){inttemp=s1.length()-s2.length();returntemp==0?s1.compareTo(s2):temp;}}下面的代码会出现问题,请问是什么原因?

解决方案

解决方案二:
会出什么问题?
解决方案三:
能通过编译吗?你在定义类的时候要定义泛型应该是形如T之类的而实际的类型是在运行时传进去的~
解决方案四:
ComByLen已被定义泛型檫除即CombyLen<String>经过檫除后变为ComByLen所以会出现ComByLen已定义错误
解决方案五:
这有什么奇怪的,本来就这样,你怎么能用2个同样的类名去实现同一个接口呢
解决方案六:
问题描述不清晰
解决方案七:
抱歉,我没说清楚问题;下面是源代码[code=javaimportjava.util.List;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;publicclassCollectionsDemo2{publicstaticvoidmain(String[]args){demo1();}publicstaticvoiddemo1(){List<String>list=newArrayList<String>();list.add("ags");list.add("edn");list.add("afdb");list.add("adsn");list.add("ab");System.out.println(list);mySort(list);//Collections.sort(list);System.out.println(list);mySort2(list,newComByLen());//Collections.sort(list,newComByLen());System.out.println(list);}publicstatic<T>voidmySort2(List<T>list,Comparator<?superT>com){for(inti=0;i<list.size()-1;i++){for(intj=i;j<list.size();j++){if(com.compare(list.get(i),list.get(j))>0){Ttemp=list.get(i);list.set(i,list.get(j));list.set(j,temp);}}}}publicstatic<TextendsComparable<?superT>>voidmySort(List<T>list){for(inti=0;i<list.size()-1;i++){for(intj=i;j<list.size();j++){if(list.get(i).compareTo(list.get(j))>0){Ttemp=list.get(i);list.set(i,list.get(j));list.set(j,temp);}}}}}classComByLen<String>implementsComparator<String>{publicintcompare(Strings1,Strings2){inttemp=s1.length()-s2.length();returntemp==0?s1.compareTo(s2):temp;}}][/code]----------JAVAC----------CollectionsDemo2.java:52:错误:找不到符号inttemp=s1.length()-s2.length();^符号:方法length()位置:类型为String的变量s1其中,String是类型变量:String扩展已在类ComByLen中声明的ObjectCollectionsDemo2.java:52:错误:找不到符号inttemp=s1.length()-s2.length();^符号:方法length()位置:类型为String的变量s2其中,String是类型变量:String扩展已在类ComByLen中声明的ObjectCollectionsDemo2.java:53:错误:找不到符号returntemp==0?s1.compareTo(s2):temp;^符号:方法compareTo(String)位置:类型为String的变量s1其中,String是类型变量:String扩展已在类ComByLen中声明的Object注:CollectionsDemo2.java使用了未经检查或不安全的操作。注:有关详细信息,请使用-Xlint:unchecked重新编译。3个错误输出完成(耗时1秒)-正常终止
解决方案八:
importjava.util.List;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;publicclassCollectionsDemo2{publicstaticvoidmain(String[]args){demo1();}publicstaticvoiddemo1(){List<String>list=newArrayList<String>();list.add("ags");list.add("edn");list.add("afdb");list.add("adsn");list.add("ab");System.out.println(list);mySort(list);//Collections.sort(list);System.out.println(list);mySort2(list,newComByLen());//Collections.sort(list,newComByLen());System.out.println(list);}publicstatic<T>voidmySort2(List<T>list,Comparator<?superT>com){for(inti=0;i<list.size()-1;i++){for(intj=i;j<list.size();j++){if(com.compare(list.get(i),list.get(j))>0){Ttemp=list.get(i);list.set(i,list.get(j));list.set(j,temp);}}}}publicstatic<TextendsComparable<?superT>>voidmySort(List<T>list){for(inti=0;i<list.size()-1;i++){for(intj=i;j<list.size();j++){if(list.get(i).compareTo(list.get(j))>0){Ttemp=list.get(i);list.set(i,list.get(j));list.set(j,temp);}}}}}classComByLen<String>implementsComparator<String>{publicintcompare(Strings1,Strings2){inttemp=s1.length()-s2.length();returntemp==0?s1.compareTo(s2):temp;}}

----------JAVAC----------CollectionsDemo2.java:52:错误:找不到符号inttemp=s1.length()-s2.length();^符号:方法length()位置:类型为String的变量s1其中,String是类型变量:String扩展已在类ComByLen中声明的ObjectCollectionsDemo2.java:52:错误:找不到符号inttemp=s1.length()-s2.length();^符号:方法length()位置:类型为String的变量s2其中,String是类型变量:String扩展已在类ComByLen中声明的ObjectCollectionsDemo2.java:53:错误:找不到符号returntemp==0?s1.compareTo(s2):temp;^符号:方法compareTo(String)位置:类型为String的变量s1其中,String是类型变量:String扩展已在类ComByLen中声明的Object注:CollectionsDemo2.java使用了未经检查或不安全的操作。注:有关详细信息,请使用-Xlint:unchecked重新编译。3个错误输出完成(耗时1秒)-正常终止

时间: 2024-10-11 12:05:31

泛型问题求解的相关文章

android中泛型传入一个外部类,处理后传回原来的类,问题求解!

问题描述 android中泛型传入一个外部类,处理后传回原来的类,问题求解! 部分代码如下: 入口类定义一泛型private List itemlist; itemlist=new ArrayList(); 创建外部类对象 GetData getdata=new GetData(itemlist); getdata.returndata(): 包中的外部类 public class GetData extends Activity{ private List<Item_activity> it

java se-使用泛型打印输出任意类型的数组,为什么调用时有错误?

问题描述 使用泛型打印输出任意类型的数组,为什么调用时有错误? import java.util.Arrays; public class FanXing { public static void printMatrix(T[][] matrix){ for(int i=0;i<matrix.length;i++){ System.out.println(Arrays.toString(matrix[i])); } } public static void main(String[] args)

诊断Java代码: 轻松掌握 Java 泛型,第4部分

至此,在这个讨论 JSR-14 和 Tiger 中泛型类型的微型系列中,我们已经探讨了: 泛型类型及被设计成支持它们的即将发布的功能 基本类型.受约束的泛型以及多态方法上的限制 几个强加给这些 Java 扩展的限制 这些扩展语言的编译器所用的实现策略如何使这些限制成为必需 在泛型类型中添加对"裸"类型参数的 new 操作的支持所带来的影响 本月,我们将探讨在可以处理 mixin(可能被期望是泛型类型中最强大的功能)之前需要先解决的问题,以此来结束对 Java 语言中泛型类型的讨论. m

诊断Java代码: 轻松掌握Java泛型,第3部分

这一系列主要讨论在 Java 编程中添加泛型类型,本文是其中的一篇,将研究还未讨论过的有关使用泛型的两个限制之一,即添加对裸类型参数的 new 操作的支持(如类 C<T> 中的 new T() ). 正如我 上个月所提到的那样,Tiger 和 JSR-14 通过使用"类型消除(type erasure)"对 Java 语言实现泛型类型.使用类型消除(type erasure),泛型类型仅用于类型检查:然后,用它们的上界替换它们.由此定义可知:消除将与如 new T() 之类

泛型-c# 动态创建控件 及触发事件 即插即用。

问题描述 c# 动态创建控件 及触发事件 即插即用. 各大大好,初来驾到,请大家多多关照,问题是这样的.需求 :需要动态添加控件.然后需要项目做出来后要实现"即插即用"的特点.(即插即用:我们要是更新一个功能,用户只要更新这个控件就可以直接使用,而不用更新整个客服端)问题 :知道要用泛型来写,但是看了一天了,不知道如何下手,现已写了如下代码:using System;using System.Collections.Generic;using System.Linq;using Sys

泛型

 什么是Java泛型                1.java泛型是java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法.                2.java泛型可以让你消除代码中的强制类型转换,同时获得一个附加的类型检查层,该检查层可以防止有人将错误类型的键或值保存在集合中.这就是泛型所做的工作. 为什么要有泛型 先来看看以下代码,        publi

flex4-FLEX4 应用 Error #2046 只能修改系统时间问题求解

问题描述 FLEX4 应用 Error #2046 只能修改系统时间问题求解 项目组2011年5月至今陆续上线的应用,昨日有些客户反映加载.swf均显示"Error #2046". 根据网上信息:(1)已排除客户端时间与服务器时间不同步或时间偏移较大的可能,确认时间是同步.(2)删除application data/adobe/下的cache文件,也不行. 现状:(1)只能将客户端的系统时间改为2015-05-06 08:10:00(临界点)之前的时间方可正常加载.swf.(2)有些P

java getmethod 方法-java getmethod() 问题求解

问题描述 java getmethod() 问题求解 package demo; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import javax.servlet.RequestDispatcher; import javax.servlet.Servlet

泛型T 如何在扩展方法中使用?

问题描述 泛型T 如何在扩展方法中使用? 本来想了解一下扩展方法,但是看到文库中的实例明显有问题,特来提问 泛型对象T 如何使用Length 属性? 可以像类中一样加继承于某某类的约束吗? http://wenku.baidu.com/link?url=Vz-Cjrq24tvblbk0l1I4IPYYfZ82jkGpzGBoNBDhi6qSCJko9hSTcrKGWrunO91TqTgyqB0AMvueHUP1or-mi8ktWMejceDW6Y-OphMnBh7 public static c