草庐IT

type-parameter

全部标签

java - 在 Java 中,为什么数组不能是类型变量的边界,但可以是通配符的边界?

在Java中,为什么数组不能是类型变量的边界,但可以是通配符的边界?你可以拥有:Listl;但你不能:classMyClass{}//ERROR!为什么? 最佳答案 考虑这段Java代码:packagetest;publicclassGenric{publicGenric(Ec){System.out.println(c.getClass().getName());}publicstaticvoidmain(String[]args){newGenric(newInteger[]{1,2});}}对于您的第一个案例:Listl;当你

java - long.Class 和 Long.TYPE 的区别

他们是否都返回相同的东西,即LongClass。实际上我在PrivilegedAccessor中使用它来传递如下PrivilegedAccessor.invokeMethod(MyClass,"MyMethod",newObject[]{arg1,arg2},newClass[]{long.class,Date.class});或者我可以使用PrivilegedAccessor.invokeMethod(MyClass,"MyMethod",newObject[]{arg1,arg2},newClass[]{Long.TYPE,Date.class});考虑到自动装箱/拆箱的开销,使用

java - 在 Java 中模拟鸭子类型(duck typing)

问题:我希望能够在Java中一般地访问Javaojbect上的任何属性/字段,类似于动态语言(想想Groovy,JavaScript)会。我在编写此管道代码时不知道它是什么类型的对象或属性/字段名称是什么。但是当我去使用它时我会知道属性/字段名称。我当前的解决方案:到目前为止,我已经编写了一个使用java.beans.Introspector的简单包装类获取Bean/POJO的属性并将它们公开为Map.它很粗糙,但适用于简单的情况。我的问题是,除了反射/转换为Map之外,还有哪些其他方法可以解决这个问题?在我走得更远之前,我想知道是否有人知道我如何从Rhino或javax.script

java - @parameters 方法在@beforeclass 方法之前执行

我正在使用junit4的“参数化”功能,我注意到@parameters方法在@beforeclass方法之前执行。这对我来说是个问题,因为我通过@parameters传递给测试用例的参数取决于@beforeclass方法中初始化的代码。例如@RunWith(Parameterized.class)publicclassTestOtherClass{Stringargument;privatestaticbooleaninitializeThis;publicTestOtherClass(Stringparameter)throwsException{argument=parameter

Java 字节码 : types of local variables?

根据这篇文章http://slurp.doc.ic.ac.uk/pubs/observing/linking.html#assignment:DuetothedifferencesininformationbetweenJavacodeandbytecode(bytecodedoesnotcontainthetypesoflocalvariables),theverifierdoesnotneedtochecksubtypesforassignmentstolocalvariables,ortoparameters.我的问题:为什么字节码不包含局部变量的类型信息,而它确实包含参数和返回

java - Clojure deftype : how to constrain field types?

我正在尝试编写一个可以从Java使用的Clojure库,而用户不知道它是用Clojure编写的。为此,我需要我的字段具有正确的类型:我喜欢我能做到这一点:(deftypePoint[^doublex^doubley])这会为x/y生成一个具有适当类型的类。然而,这似乎只适用于原语,不适用于类:(deftypeFoo[^Stringbar])生成一个:publicfinalObjectbar;我期望的地方:publicfinalStringbar;有没有办法限制字段类型?deftype/defrecord之外还有其他选项吗? 最佳答案

java - 为什么java中的 "super type token"模式需要匿名类

在NealGafter的“父类(superclass)型标记”模式(http://gafter.blogspot.com/2006/12/super-type-tokens.html)中,使用匿名对象传递参数化类型:classReferenceType{}/*anonymoussubclassof"ReferenceType"*/ReferenceType>referenceType=newReferenceType>(){};TypesuperClass=b.getClass().getGenericSuperclass();System.out.println("supertype

java - getClass() 文档中的 "the erasure of the static type of the expression on which it is called"是什么意思?

"publicfinalClassgetClass()"的文档对象的方法说:TheactualresulttypeisClasswhere|X|istheerasureofthestatictypeoftheexpressiononwhichgetClassiscalled.Forexample,nocastisrequiredinthiscodefragment:我不明白这个解释,特别是关于什么|X|据说是-“删除调用getClass的表达式的静态类型”。|X|是什么形式的符号?或者,也许,还有什么地方会|X|使用类型符号? 最佳答案

Java:为什么我会收到错误消息 "Type mismatch: cannot convert int to byte"

如果您声明byte或short类型的变量并尝试对它们执行算术运算,您会收到错误“类型不匹配:无法将int转换为short”(或相应地“类型不匹配:无法将int转换为byte”)。bytea=23;byteb=34;bytec=a+b;在这个例子中,编译错误在第三行。 最佳答案 虽然算术运算符被定义为可以对任何数字类型进行运算,但根据Java语言规范(5.6.2二进制数字提升),byte和short类型的操作数在传递给运算符之前会自动提升为int。要对byte或short类型的变量执行算术运算,您必须将表达式括在括号中(其中的运算将作

java - 在Java中,匿名类可以声明自己的类型参数吗?

匿名类可以声明自己的类型参数吗? 最佳答案 你是对的,这是不可能的。由于匿名类只能使用一次,因此向其中添加您永远无法实际使用/继承的类型参数有什么意义?您不能从定义它的代码位置以外的任何其他代码位置实例化一个匿名类多次,并且您也不能将它子类化。 关于java-在Java中,匿名类可以声明自己的类型参数吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4774678/