Java模板问题
我实例化了一个对象,如下所示:Java模板问题,java,generics,function,Java,Generics,Function,我实例化了一个对象,如下所示: GraphMatrixDirected<String, Integer> g floyd(g); public void floyd(GraphMatrixDirected<V,E> g) 弗洛伊德的签名如下: GraphMatrixDirected<String, Integer> g floyd(g); public void floyd(GraphMatrixDirected<V,E> g) 试
GraphMatrixDirected<String, Integer> g
floyd(g);
public void floyd(GraphMatrixDirected<V,E> g)
弗洛伊德的签名如下:
GraphMatrixDirected<String, Integer> g
floyd(g);
public void floyd(GraphMatrixDirected<V,E> g)
试一试
请注意,我不赞成这种设计,但这超出了重点。试试看
请注意,我不赞成这种设计,但这超出了重点。也许你的意思是
floyd
是一种通用方法
public <V,E> void floyd(GraphMatrixDirected<V,E> g)
public void floyd(图M方向g)
否则,无论什么泛型类型floyd
都需要将
参数化为
如果floyd
确实属于泛型类型,但是floyd
也需要是具有自己类型参数的泛型方法,那么您可能需要选择不同的名称,以免彼此隐藏
工具书类
-
- 及
泛型类型与泛型方法 选择哪条解决方案路线取决于floyd做什么和其他事情。一个重要的问题是:你认为<代码>弗洛依德<代码>是属于泛型类型<代码> > GracMatRXORD (答案可能不是)的方法吗?或者它是一个通用的实用方法,适用于任何<代码>图< /代码>?(答案可能是肯定的) 作为示例和指南,我们还可以了解Java集合框架的结构:
- -定义类型基本功能的泛型类型
- 指定
,boolean add(ee)
等E get(int index)
- 指定
- -提供
实用程序通用方法静态
static void shuffle(列表)
static也许你的意思是
是一种通用方法floyd
public <V,E> void floyd(GraphMatrixDirected<V,E> g)
否则,无论什么泛型类型public void floyd(图M方向g)
都需要将floyd
参数化为
如果
确实属于泛型类型,但是floyd
也需要是具有自己类型参数的泛型方法,那么您可能需要选择不同的名称,以免彼此隐藏 工具书类floyd
-
- 及
泛型类型与泛型方法 选择哪条解决方案路线取决于floyd做什么和其他事情。一个重要的问题是:你认为<代码>弗洛依德<代码>是属于泛型类型<代码> > GracMatRXORD (答案可能不是)的方法吗?或者它是一个通用的实用方法,适用于任何<代码>图< /代码>?(答案可能是肯定的) 作为示例和指南,我们还可以了解Java集合框架的结构:- -定义类型基本功能的泛型类型
- 指定
,boolean add(ee)
等E get(int index)
- 指定
- -提供
实用程序通用方法静态
static void shuffle(列表)
static V和E的定义可能是类范围的,对吗?它们是否包括任何限制,比如必须扩展任何类?是的,它们是类范围的(我认为??)。我怎么知道呢?如果它们是在类声明中定义的,那么它们是类范围的。如果它们是在方法声明中定义的(参见下面的答案),那么它们是方法范围的。好的,那么是的,它们是类范围的,正如我在编辑中所显示的。你能发布AbstractStructure和Graph类声明的代码吗?如果@dimitris andreou不正确,我想问题正是我第一次想的:V和E必须扩展某个类,因此不能是字符串和整数。V和E的定义可能是类范围的,对吗?它们是否包括任何限制,比如必须扩展任何类?是的,它们是类范围的(我认为??)。我怎么知道呢?如果它们是在类声明中定义的,那么它们是类范围的。如果它们是在方法声明中定义的(参见下面的答案),那么它们是方法范围的。好的,那么是的,它们是类范围的,正如我在编辑中所显示的。你能发布AbstractStructure和Graph类声明的代码吗?如果@dimitris andreou不正确,我想问题正是我第一次想的:V和E必须扩展某个类,因此不能是字符串和整数。正确的网址是:@Jim:谢谢更正;注意。一旦我有足够的问题信息,我会自己修改并更新。@Polygene:你现在看到什么新的吗?@00PS:我没有看到你有什么新的东西。您是否阅读了我链接的常见问题解答,特别是关于泛型类型与泛型方法的常见问题解答?无论如何,我将尝试提供更多信息,但除非您提供更多信息和/或自己阅读,否则我只能猜测发生了什么。@00PS:try
,暂时尝试快速修复;不过,明天我将对代码进行更详细的评论。有很多内容需要涵盖,例如,对于每个循环,更喜欢原语而不是盒装原语,等等。指向“Angelika Langer的Java通用常见问题解答”的链接有一个输入错误。正确的网址是:@Jim:谢谢更正;注意。一旦我有足够的问题信息,我会自己修改并更新。@Polygene:你现在看到什么新的吗?@00PS:我没有看到你有什么新的东西。您是否阅读了我链接的常见问题解答,特别是关于泛型类型与泛型方法的常见问题解答?无论如何,我将尝试提供更多信息,但除非您提供更多信息和/或自己阅读,否则我只能猜测发生了什么。@00PS:trypublic static void allpairs shortestpath(GraphMatrixDirected g)
,暂时尝试快速修复;不过,明天我将对代码进行更详细的评论。有很多内容需要涵盖,例如,对于每个循环,与装箱原语相比,更喜欢原语,例如public static void allpairs shortestpath(GraphMatrixDirected g)
GraphMatrixDirected<String, Integer> g = new GraphMatrixDirected<String, Integer>();
public <V,E> void floyd(GraphMatrixDirected<V,E> g)
-