首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Xamarin:在绑定jar库时,没有getXXX()/setXXX()的公共字段失去了它的泛型

Xamarin:在绑定jar库时,没有getXXX()/setXXX()的公共字段失去了它的泛型
EN

Stack Overflow用户
提问于 2014-05-21 19:39:16
回答 2查看 285关注 0票数 2

在罐子里:

代码语言:javascript
运行
AI代码解释
复制
public List<CloudPoiInfo> poiList;

但是Xamarin以System.Collections.IList poiList的形式生成了代码,System.Collections.Generic.IList<Com.Baidu.Mapapi.Cloud.CloudPoiInfo> myClassList是对的。

我试过了

代码语言:javascript
运行
AI代码解释
复制
<attr path="/api/package[@name='com.baidu.mapapi.cloud']/class/field[@type-generic-aware='java.util.List&lt;com.baidu.mapapi.cloud.CloudPoiInfo&gt;']" name="type">System.Collections.Generic.IList&lt;Com.Baidu.Mapapi.Cloud.CloudPoiInfo&gt;</attr>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-22 17:49:51

我已经修好了:

Metadata.xml

代码语言:javascript
运行
AI代码解释
复制
<remove-node path="/api/package[@name='com.baidu.mapapi.cloud']/class[@name='CloudSearchResult']/field[@name='poiList']"/>

{project}/Additions/CloudSearchResult.cs

代码语言:javascript
运行
AI代码解释
复制
using Android.Runtime;
using System;
using System.Collections;
using System.Collections.Generic;

namespace Com.Baidu.Mapapi.Cloud
{
    public partial class CloudSearchResult : BaseSearchResult
    {
    static IntPtr poiList_jfieldId;

    // Metadata.xml XPath field reference: path="/api/package[@name='com.baidu.mapapi.cloud']/class[@name='CloudSearchResult']/field[@name='poiList']"
    [Register("poiList")]
    public global::System.Collections.Generic.IList<CloudPoiInfo> PoiListX
    {
        get
        {
        if (poiList_jfieldId == IntPtr.Zero)
            poiList_jfieldId = JNIEnv.GetFieldID(class_ref_2, "poiList", "Ljava/util/List;");
        IntPtr __ret = JNIEnv.GetObjectField(Handle, poiList_jfieldId);
        return global::Android.Runtime.JavaList<CloudPoiInfo>.FromJniHandle(__ret, JniHandleOwnership.TransferLocalRef);
        }
        set
        {
        if (poiList_jfieldId == IntPtr.Zero)
            poiList_jfieldId = JNIEnv.GetFieldID(class_ref_2, "poiList", "Ljava/util/List;");
        IntPtr native_value = global::Android.Runtime.JavaList<CloudPoiInfo>.ToLocalJniHandle(value);
        JNIEnv.SetField(Handle, poiList_jfieldId, native_value);
        JNIEnv.DeleteLocalRef(native_value);
        }
    }

    internal static new IntPtr java_class_handle_2;
    internal static new IntPtr class_ref_2
    {
        get
        {
        return JNIEnv.FindClass("com/baidu/mapapi/cloud/CloudSearchResult", ref java_class_handle_2);
        }
    }
    }

    public abstract partial class BaseSearchResult : Java.Lang.Object
    {
    }

    public partial class CloudPoiInfo : Java.Lang.Object
    {
    }
}
票数 1
EN

Stack Overflow用户

发布于 2014-05-22 04:31:18

Java和C#中的泛型非常不同,因此没有泛型的IList实际上是正确的。这是由于Java端的类型擦除造成的。

Java

泛型在编译时检查类型正确性.然后,在称为类型擦除的过程中删除泛型类型信息。例如,列表将转换为非泛型类型列表,该列表通常包含任意对象.编译时检查确保生成的代码类型正确. 由于类型擦除,无法在运行时确定类型参数.例如,在运行时检查ArrayList时,无法确定在类型擦除之前它是ArrayList还是ArrayList。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23797436

复制
相关文章
dart(三)--泛型、库的引用dart(三)--泛型、库的引用
泛型(dynamic) abstract class Cache<T> { T getByKey(String key); setBukey(String key, T value); } /* 1,泛型也可以限制类型,T代表Cache或Cache的子类 */ class Foo<T extends Cache> { } 库的引用 /* 基本引用*/ import 'dart:math'; /* 若引用多个库中关键字、方法名、参数名重名了,使用as xx将库重
用户8893176
2021/08/09
4940
什么是泛型以及在集合中泛型的使用[通俗易懂]
泛型最常与集合使用,因为泛型最开始开始被加入Java就是为了解决集合向下转型一类问题的。如果我们有这样一个需求:定义一个描述类圆,要求圆中的数据类型是不确定的,也就是声名属性的时候,属性类型是不确定的。比如描述类圆中有半径,要求半径可以用int,也可以用double。那么此时数据类型不确定,就使用泛型,把数据类型参数化。
全栈程序员站长
2022/06/25
2.2K0
泛型在Java中的应用
在对该类进行实例化时,需要将泛型指定为具体的包装类,此时,在实例化泛型类时,就可以起到编译时检查的作用。
头发还在
2023/10/16
2210
【Java 泛型】泛型简介 ( 泛型类 | 泛型方法 | 静态方法的泛型 | 泛型类与泛型方法完整示例 )
泛型 可以 简单理解为 参数化类型 , 主要作用在 类 , 方法 , 接口 上 ;
韩曙亮
2023/03/29
16.4K0
【Java 泛型】泛型简介 ( 泛型类 | 泛型方法 | 静态方法的泛型 | 泛型类与泛型方法完整示例 )
绑定子类的泛型基类,反模式?
    这次总结一个个人认为的反模式:“绑定子类的泛型层基类”,这个模式在一些著名的框架中也见到过,如果CSLA、BlogEngine。我自己在原来的写的框架中,也用到过。     当然了,个人认为是反模式,各们同仁并不一定这样认为,仁者见仁,智者见智了。不过我好几次都是受尽折磨,所以决定写出来给大家分享下心得。 模式介绍     “层基类”是MF提出的一个基本模式,详见:《Layer Supertype》。这种模式在经典的层次型架构设计的实现中,是极其重要的。我相信,大家一般在做三层架构时,不可能不给出基
用户1172223
2018/01/29
1K0
Dart中的泛型方法、泛型类、泛型接口
为了能在一个方法里实现传入什么数据类型就返回什么数据类型,可以利用泛型将方法写成下面这样:
越陌度阡
2020/12/10
4K0
Dart中的泛型方法、泛型类、泛型接口
【Flutter】Dart 泛型 ( 泛型类 | 泛型方法 | 特定类型约束的泛型 )
泛型作用 : 为 类 , 接口 , 方法 提供复用性 , 支持类型不确定的数据类型 ;
韩曙亮
2023/03/28
5.7K0
传统的编程并不溯源 error,也没有泛型
例如,我们不得不正视泛型的问题。在抽象数据类型的概念出现之前,实际上已经需要泛型了。如果你写一个排序例程,并不希望更替不同类型的数组时都要重写。
用户8671053
2021/09/26
3690
[Rust笔记] 我也浅谈【泛型参数】的【晚·绑定late bound】
首先,无论是【早·绑定】还是【晚·绑定】,【泛型参数-绑定】都是发生在编译阶段,而不是运行期间。
MikeLoveRust
2022/11/28
1.1K0
[Rust笔记] 我也浅谈【泛型参数】的【晚·绑定late bound】
Java泛型详解——绝对是对泛型方法讲解最详细的,没有之一!
ArrayList可以存放任意类型,例子中添加了一个String类型,添加了一个Integer类型,再使用时都以String的方式使用,因此程序崩溃了。为了解决类似这样的问题(在编译阶段就可以解决),泛型应运而生。
Spark学习技巧
2018/08/01
4.2K0
Java泛型详解——绝对是对泛型方法讲解最详细的,没有之一!
ArrayList可以存放任意类型,例子中添加了一个String类型,添加了一个Integer类型,再使用时都以String的方式使用,因此程序崩溃了。为了解决类似这样的问题(在编译阶段就可以解决),泛型应运而生。
Java团长
2018/08/03
5370
C#泛型入门泛型类、泛型集合、泛型方法、泛型约束、泛型委托
给.neter们整理了一份《.NET/C#面试手册》,目前大约4万字左右,初衷也很简单,就是希望在面试的时候能够帮助到大家,减轻大家的负担和节省时间。对于没有跳槽打算的也可以复习一下相关知识点,就当是查缺补漏!
全栈程序员站长
2022/09/14
2.7K0
C#泛型入门泛型类、泛型集合、泛型方法、泛型约束、泛型委托
【Java 泛型】泛型用法 ( 泛型类用法 | 泛型方法用法 | 泛型通配符 ? | 泛型安全检查 )
泛型类用法 : 使用时先声明泛型 , 如果不声明泛型 , 则表示该类的泛型是 Object 类型 ;
韩曙亮
2023/03/29
10.3K0
【Java 泛型】泛型用法 ( 泛型类用法 | 泛型方法用法 | 泛型通配符 ? | 泛型安全检查 )
Java进阶:【泛型】认识泛型,泛型方法,泛型类,泛型接口和通配符
例如关于这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个参数,这个类型参数叫做泛型。
冷环渊
2021/11/29
3.6K0
Java进阶:【泛型】认识泛型,泛型方法,泛型类,泛型接口和通配符
泛型(泛型擦除)【java基础—-泛型】
Java泛型是J2 SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type parameter),这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
全栈程序员站长
2022/11/02
2.9K0
泛型(泛型擦除)【java基础—-泛型】
【Kotlin】泛型 ① ( 泛型类 | 泛型参数 | 泛型函数 | 多泛型参数 | 泛型类型约束 )
将 泛型参数 T 放在 尖括号 <T> 中 , 该泛型参数放在 类名后 , 主构造函数之前 , 该泛型参数 T 是 类型占位符 ,
韩曙亮
2023/03/30
3.1K0
泛型接口,泛型类和泛型通配符
泛型的使用位置,除了最常见的约束集合元素,还可以使用在接口,类,方法上面。最本质的原因就是为了在使用接口,类,方法的时候,可以将类型作为参数,进行类型的参数传递。这样可以使程序的编写更加的灵活,在创建对象,调用方法的时候动态的指定类型,所以泛型也可以理解为类型的参数化。
用户5745563
2019/07/04
2.4K0
泛型接口,泛型类和泛型通配符
Java 泛型擦除_泛型和泛型擦除
如果仅凭直觉来看,该程序可能会输出 false 这个结果,但在具体的环境下运行时会输出 true 。这很令人费解,这是为什么呢?
全栈程序员站长
2022/11/01
2.5K0
Java的泛型
泛型是我们需要的程序设计手段。使用泛型机制编写的程序代码要比那些杂乱地使用 Object 变量,然后再进行强制类型转换的代码具有更好的安全性和可读性。
真正的飞鱼
2023/06/13
2750
Java的泛型
使用Java的小伙伴,对于Java的一些高级特性一定再熟悉不过了,例如集合、反射、泛型、注解等等,这些可以说我们在平时开发中是经常使用到的,尤其是集合,基本是只要写代码没有用不到的,今天我们先来谈谈泛型。
全栈程序员站长
2022/09/08
6860
Java的泛型

相似问题

表单集合,进入getXXX而不是setXXX或addXXX。

10

Xamarin mapsforge绑定泛型集合问题

22

Xamarin中的故障绑定Jar库

13

Xamarin jar绑定

11

具有泛型和公共字段的多态性

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档