【发布时间】:2016-04-10 17:44:54
【问题描述】:
我正在寻找解决以下问题的方法。给定 Java 中的类层次结构:
public interface Bar<T> {
getValue<T>();
}
public abstract class BarImpl<T> implements Bar<T> {
}
public class Foo extends BarImpl<Double> {
@override
public Double getValue() {
// ..
}
}
Xamarin.Android 生成包装器如下:
// Now in C# land
public interface Bar
{
// Xamarin.Android omits T Value { get; }
}
public partial abstract class BarImpl : Bar
{
// Xamarin.Android omits abstract T Value { get; }
}
public partial class Foo : BarImpl
{
// COMPILE ERROR HERE. No method to override
public override java.lang.Double Value
{
get { /* ... */ }
}
}
现在我很清楚 Java 编译会去除泛型信息,所以这实际上不是一个容易解决的问题,但我确实想知道:
有人在 java.android 中遇到过类似的问题
您采用了哪些巧妙的解决方案来绑定此类层次结构?
我只对 Foo 上的 Value 的获取器(绑定的 c# 类)以及通过基本接口访问它的某种方式感兴趣(强制转换即可)。
【问题讨论】:
-
生成的类不是部分的吗? o0
-
是的,它们是,但是我如何首先删除 Foo.Value 上的覆盖?
-
哦...您是说完全排除节点 Foo.Value 并在部分类中声明它? ...
-
也许或者只是添加一个额外的接口并在你的部分类中实现它
-
...我会试一试。 Xamarin.Android 对此所做的一切都是一团糟……:/
标签: java c# xamarin xamarin.android