Lou*_*caj 1 .net c# java interface
在C#中
class ListMap<K, E>
: ImyMap<K, E>, IComparable<K>, IEnumerable<KeyValuePair<K, E>>
{
}
Run Code Online (Sandbox Code Playgroud)
在Java中
class MyListMap<K extends Comparable<? super K>, E>
implements MyMap<K,E>, Iterable<KeyValuePair<K, E>>
{
}
Run Code Online (Sandbox Code Playgroud)
只是尝试将一些数据结构从Java转换为C#,并想知道我的C#实现是否与我的Java实现相同.
如果没有,请你纠正吗?
不,那些不平等.该K extends ...部分需要转换为约束:
class ListMap<K, E>
: ImyMap<K, E>, IEnumerable<KeyValuePair<K, E>>
where K : IComparable<K>
{
}
Run Code Online (Sandbox Code Playgroud)
? super KC#中不需要通配符.通配符是Java支持共同/逆转的方式.在C#中,这是作为接口声明的一部分完成的:
interface IComparable<in K> { ... }
Run Code Online (Sandbox Code Playgroud)
该in修改使得界面逆变,其作为Java的通配符相同的效果.