相关疑难解决方法(0)

C#和Java中的泛型与C++中的模板有什么区别?

我主要使用Java和泛型相对较新.我一直在阅读Java做出错误决定或者.NET有更好的实现等.

那么,泛型中C++,C#,Java之间的主要区别是什么?每个人的利弊?

c# c++ java generics templates

203
推荐指数
6
解决办法
5万
查看次数

<?有什么区别?超级E>和<?延伸E>?

<? super E>和之间有什么区别<? extends E>

例如,当你看一下类时java.util.concurrent.LinkedBlockingQueue,构造函数有以下签名:

public LinkedBlockingQueue(Collection<? extends E> c)
Run Code Online (Sandbox Code Playgroud)

并为方法之一:

public int drainTo(Collection<? super E> c)
Run Code Online (Sandbox Code Playgroud)

java generics

135
推荐指数
7
解决办法
5万
查看次数

类Class <T>的通用性质是什么意思?什么是T?

在集合方面,我理解泛型.但是在Class<T>课堂上它意味着什么呢?实例化Class对象时,只有一个对象.那为什么T参数呢?这是什么规定的?为什么有必要(如果是)?

java generics reflection class

41
推荐指数
2
解决办法
2万
查看次数

如何在Java中解释"public <T> T readObjectData(... Class <T> type)"?

我有这个Java代码.

public <T> T readObjectData(ByteBuffer buffer, Class<T> type) {
...
T retVal = (T) summaries;
return retVal;
Run Code Online (Sandbox Code Playgroud)

如何解释这段代码?为什么我们需要public <T> T而不是public T

如何将参数赋给第二个参数(Class<T> type)?

java generics

34
推荐指数
4
解决办法
2万
查看次数

不寻常的通用语法:数组.<String> asList(...)

我找到了一个'不寻常'的通用语法,例如:

Arrays.<String>asList(...);
Collections.<String>emptyList();
Run Code Online (Sandbox Code Playgroud)

显然,这些方法的结果是通用的.这种语法是否用于类型检查?一个Object阵列不能为一个参数Arrays.<String>asList(...).

java generics

22
推荐指数
2
解决办法
2万
查看次数

使用swig生成std :: vector到java.util.Vector代码

我尝试用SWIG生成java代码

MyList.h中,我声明了一个名为_list的自定义列表对象

List<T*> _list;
Run Code Online (Sandbox Code Playgroud)

这个List类继承自vector

class List : public vector<T>
Run Code Online (Sandbox Code Playgroud)

在业务类中(在C++中),我返回一个自定义对象列表

List<MyObject> getMyList(){
   ....
   return list;
}
Run Code Online (Sandbox Code Playgroud)

所以我想生成java代码,我可以在这里检索这个C++ List作为java.util.List或java.util.Vector.

在我的swig.i文件中,我无法管理如何体现

%typemap(jstype) List "java.util.Vector"
namespace std {
   %template(CustomVector) vector<MyObject>;
}
Run Code Online (Sandbox Code Playgroud)

任何种类的帮助如何配置此swig.i模板文件或一些示例代码生成java.util.List/Vector返回函数将不胜感激.

谢谢.

c++ java swig list vector

6
推荐指数
1
解决办法
5612
查看次数

什么是通用方法,在这种情况下<T>如何绑定?

前言: 我理解泛型以及它们是如何在类级别声明的(例如class MyClass<T>),但我从未在静态方法的层次上声明它,并且没有任何明确的绑定(例如class MySubclass<String> extends MyClass).

我在我正在处理的应用程序中找到了这段代码片段(我没有写这部分).我从未见过以这种方式声明的方法.<T>不是在类中定义的其他地方.Intent.getExtras().get()返回Object实际上可能是一个String,Boolean...等等.

private static <T> T getItemExtra(final Intent intent, final String extraName) {
    T item = null;

    if(intent != null && intent.getExtras() != null) {
        item = (T) intent.getExtras().get(extraName);
    }

    return item;
}
Run Code Online (Sandbox Code Playgroud)

样品用法:

String s1 = getItemExtra(someIntent, "some_string_extra");
Uri u1 = getItemExtra(someIntent, "some_uri_extra");
Run Code Online (Sandbox Code Playgroud)

JVM如何知道要使用的类型<T>?(是的,此方法编译并成功执行).

java generics

5
推荐指数
1
解决办法
266
查看次数

标签 统计

java ×7

generics ×6

c++ ×2

c# ×1

class ×1

list ×1

reflection ×1

swig ×1

templates ×1

vector ×1