我正在转换一堆Java
到C#
通过Sharpen
和大多数转换是罚款,只需要很小的调整,但通用转换是相当薄弱,需要很多的清理。Java到C#/静态方法与非类型通用类参数
但是在几个领域,我很困惑在Java中注入/编译downcasts(upcasts?),因为类型参数不能在静态方法的声明中使用。
给出一个Java Graph
通用类和它的一个子类,DependencyGraph<T>
:
public class Graph<V, E>
{
~~~
}
public final class DependencyGraph<T> extends Graph<String, Object>
{
~~~
}
以下Java静态Alorgithms.topo
得到这两个具有不同Graph
和Visitors
泛型数组电话(和子类碱基类):
public final class Algorithms
{
public static void topoSort(Graph g, Visitor visitor)
{
Vertex[] vertices = new Vertex[noOfDegreesOfFreedom];
~~~
}
}
当st atic方法的参数使用泛型类,即Graph g
,是在运行时传递给Java虚拟机处理的静态方法的类型?
或是在编译时调用Alorgithms.topo
的每种方法的泛型类型实现,并将其折叠为一个大类?
在这一天结束的时候,我试图找出将这些转换为C#的最痛苦的方法。
Java的泛型大部分是语法糖,所以会让事情有点不同。我很确定生成的代码对这些类型一无所知,所以它可以在没有定义任何类型的情况下进行。 –