我遇到了这个函数定义:
public Collection<Class<? extends SomeClass>> someFunc();
Class<?部分是什么意思?来自C++,它看起来像模板,但我不太确定是否是这样的,因为在Java中有一些结构看起来像C++,但并不完全相同。无论是哪种情况,我都想知道这意味着什么,以及它是如何使用的。
我查找了这意味着什么,但找不到任何相关的东西(也许这个操作符有一个我不知道的特殊名称)--查找"Class<? in java“返回的结果类似于”java中的类是什么“。我对Java编程相当陌生,所以如果这是一些
考虑以下C++程序:
#include <iostream>
using namespace std;
template<typename T>
class example
{
public:
void function (T a)
{
std::cout<<a.size ();
}
};
int main() {
example<string> a; // this doesn't
string b = "a";
//example<int
我是java的新手。但我经常使用c++。我有一个用c++写的类。现在我需要用java重写这个类。我把泛型类型搞糊涂了。
我的c++类是这样的:
//Form, Cmpt are of class type. nCmpt is a integer
template <class Form, class Cmpt, int nCmpt>
class VectorSpace
{
public:
//component array
Cmpt v[nCmpt];
//constructors
VectorSpace();
VectorSpace(const V
我正在尝试用java做以下事情:
public class ClassName<E> extends E
然而,这样做,我得到了一个:
error: unexpected type
是不是简单地说,java不能做到这一点?-如果是这样的话,我将如何实现这一效果?它在C++中完美地工作,使用模板,类似于:
template<typename E>
class ClassName: public E
我真正想要实现的是,能够以这种方式将类链接在一起,以达到java中多重继承的效果。
我的应用程序抛出
java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
对于此代码:
public class DsMap<K,V> implements Map<K, V>{
protected Class<K> kClazz;
protected Class<V> vClazz;
// Called during DS.getMap(mapName) method
这是我想要实现的简单代码结构:
public class B {}
public class A<X extends B> {
X x;
public A(X x) {this.x = x;}
public X getX() {return x;}
}
public class C<A> {
public A getA() {return null;}
public A<T> T getGenericXOfA() {return getA().getX();}
}
我想使用A类的泛型参数中使用的方法
我对c++中的模板和java中的泛型是如何工作的感到有点困惑。如果有人能给我解释一下这段java代码是如何被c++的,那就太好了:
public class Box<T> {
private T t;
public void add(T t1) {
this.t = t1;
}
public T get() {
return t;
}
public <U> void inspect(U u){
System.out.println("T:
这是从编译器内部角度提出的问题。
我对泛型感兴趣,而不是模板(C++),所以我用C#标记了这个问题。而不是Java,因为AFAIK两种语言中的泛型在实现上有所不同。
当我查看语言w/o泛型时,它非常简单,您可以验证类定义,将其添加到层次结构中,仅此而已。
但是如何处理泛型类,更重要的是如何处理对它的引用呢?如何确保每个实例化的静态字段都是单数(即每次解决泛型参数时)。
假设我看到一个电话:
var x = new Foo<Bar>();
我是否向层次结构中添加了新的Foo_Bar类?
更新:到目前为止,我只发现了两篇相关的文章,然而,即使它们在“如何自己做”的意义上也没有太多的细节
假设我有一个模板类,如:
template <class type, size>
class myTemplate
我有一个抽象的基类:
class myDataType
和各种派生类
class subDataType1 : public myDataType
class subDataType2 : public myDataType
...
class subDataTypeN : public myDataType
我想做的是,打电话:
myTemplate<myDataType, size> myObject;
但是,这显然不起作用,因
假设我正在实现一个多态树数据结构,它可以接受任何类型的数据……
Tree<Int> or Tree<String> or Tree<Object>
但是我是用C++....how实现的,我会指定树可以包含类似于Java语言中的泛型的任意类型吗
另外,在C++中是否存在与C++中的所有对象都继承Object的Java等效的对象
我试图看看是否可以在Java中模仿模板表达式模式,以便进行优化,比如循环融合。
作为一个例子,我将这个表达式模板示例中的c++类移植到java类:。
首先,模板类VecExpression<E>表示向量表达式。它使用模板参数E,并将E的类类型作为构造函数参数。然后,它将私有变量thisAsE设置为this强制转换为E的类类型。
public abstract class VecExpression <E> {
private VecExpression thisAsE;
public VecExpression(Class<E> type)
在C++中,您可以在参数中指定函数的返回类型,例如:
C++
float* myFloat = CollectionClass.ptr<float>();
int* myInt = CollectionClass.ptr<int>();
在Java中有没有等价物可以指定返回类型而不添加额外的类args?
Java
//This doesn't work (due to type erasure)
public <T> T getDate()
{
if (T instanceof Da
我不知道为什么这在Java中不起作用:
import java.util.Map;
public class FreqCounter<T,R> {
private Map<T, Integer> hist;
private R item;
public FreqCounter (final R item_) {
item = item_;
}
public T getMostFrequentElement() {
T most_frequent_element = T();
Int
请有人解释一下,为什么需要为ForEachLoop实例指定泛型类型?
编译器抱怨的原因:类型不匹配:不能从元素类型对象转换为字符串
JDK 1.5.0_09
import java.util.ArrayList;
import java.util.Collection;
public class ForEachLoop<T> {
public static void main(String[] args) {
// Non functional version
ForEachLoop f = new ForEachLoop();
// Functi
为什么与模板类无关的集合会删除其类型?这里有一个例子:(对不起,由于我很困惑的错误,它不会编译。)
package test;
import java.util.ArrayList;
import java.util.List;
public class TemplateTest {
public static class A { }
public static class B<T extends Comparable> {
List<A> aList = new ArrayList<A>();
pu
我是java.I刚刚读过关于java泛型的教程。
有一个关于声明泛型方法和构造函数的部分。
Methods and constructors can be generic if they declare one/more type variables.
public static <T>T getFirst (List<T> list)
此方法接受对List的引用,并将返回类型为T的对象。
为什么静态后有T?这是印刷错误吗?
那是什么意思?
我是java的初学者,是泛型概念的新手。
我在学习C++中的泛型时遇到了一些麻烦。 我想要实现的是拥有一个抽象的泛型类 template <typename T>
class MediaEditor {
public: virtual ~MediaEditor() = default;
} 然后是扩展它的2个类 class ImageEditor: public MediaEditor<TypeA> {}
class VideoEditor: public MediaEditor<TypeB> {} 然后在我的main()中,我想声明一个MediaEditor类型的指针,如下所示: Me
例如,java.util.Collections中的check方法
public static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
为什么我可以这样定义它:
public static <T> int binarySearch(List<T> list, T key, Comparator<T> c)
为什么这在java中不起作用?
我试着写一个treemap类,我遇到了一些问题,其中一个是泛型。如果java.util.Map.Entry是一个类型,我可以在实例声明中使用,为什么我不能在类标题中使用它?
为什么泛型适用于此:
public class test5 <K extends Comparable<K>,V>{
TreeSet <java.util.Map.Entry<K,V>> treeBack;
}
而不是为了这个:
public class test5 <java.util.Map.Entry<K,V>>{
}