jjzjj

getclass

全部标签

java - 在 Java 中,在泛型实例上调用 getClass 时如何避免原始类型?

假设我在Java中有这个:Listlist=newArrayList();list.getClass();最后一个表达式的类型是Class.我明白为什么,由于删除,它不能是Class>.但是为什么不能是Class>呢??如果我想将这个表达式的结果分配给一个以某种方式保持该类实际上是某种类型的信息List?ClasslistClass=list.getClass();//rawtypewarningClass>listClass=(Class>)list.getClass();//uncheckedcastwarning 最佳答案 首

java - Java 中的 getClass 是如何工作的

这是JavaDoc说:publicfinalClassgetClass()ReturnstheruntimeclassofthisObject.ThereturnedClassobjectistheobjectthatislockedbystaticsynchronizedmethodsoftherepresentedclass.TheactualresulttypeisClasswhere|X|istheerasureofthestatictypeoftheexpressiononwhichgetClassiscalled.Forexample,nocastisrequiredint

java - 为什么getClass返回类名+$1(或$*)

我正在编写一段代码,如果它是某个类的实例,我必须在其中转换对象。像往常一样,我使用instanceof来检查兼容性。问题是检查永远不会满足,因为对象属于“奇怪”的类。例如;当我在此对象上调用方法getClass().getSimpleName()时,它返回类的名称+$*(例如ViewPart$1而不是ViewPart)。$*是什么意思?是否有解决方案或解决方法? 最佳答案 这显示了一个内部类(匿名的(如果它有一个数字)或命名的)。例如:classFoo{staticclassBar{}}Foo.Bar类的名称是Foo$Bar。现在如

java - 如何使用 getClass() 判断对象是否为数字?

我想动态判断Java中的对象是否为数字。我的代码如下:if(obj.getClass().equals(Number.class)){attributeTypeStr="Numeric";}else{attributeTypeStr="Non-Numeric";}Objectobj可以是任何数字类型,如Integer、Float、Double等。但是当我用Integer/Float/Double测试它时code>,attributeTypeStr总是返回"Non-Numeric"。我猜这是因为Integer/Float/Double是Number的子类,但是Number.class不等

java - Java 中通用方法参数的 getClass()

以下Java方法编译失败:voidfoo(Tt){Classklass=t.getClass();}收到的错误是:类型不匹配:无法从Class转换至Class谁能解释为什么Class无效,但是Class还好吗?Javadoc说:TheactualresulttypeisClasswhere|X|istheerasureofthestatictypeoftheexpressiononwhichgetClassiscalled.Forexample,nocastisrequiredinthiscodefragment:Numbern=0;Classc=n.getClass();

java - 在接口(interface)上使用 .getclass()

这可能是一个非常简单的问题。嘿,我是一名学生,对Java还比较陌生,我目前正在为明天的期中考试而学习。我遇到的练习题之一是当你有类似的东西时会发生什么:System.out.println(interface1.getClass().getName());interface1已声明为interface1=class1。我很确定它会打印“class1”而不是“interface1”,因为interface1不是一个类,对吗?但我不确定,因为问题还说如果它产生编译时错误,那么就这么说。我们的教授以欺骗我们而闻名,而且一旦我拿回测验并且仍然对为什么我做错了问题感到困惑。

Java:T对象; obj.getClass() 的类型是 Class<?> 而不是 Class<?延伸 T>。为什么?

在这样的函数中:voidfoo(Tobj)obj.getClass()的类型是Class而不是Class.为什么?下面的代码工作正常:Stringfoo="";ClassfooClass=foo.getClass();所以T#getClass()的签名似乎返回一个Class,对吧?如果T为什么签名不同真的是泛型吗?为了克服这个问题(并且让我更清楚我在徘徊什么),我实现了这个功能:@SuppressWarnings("unchecked")staticClassclassOf(Tobj){return(Class)obj.getClass();}问题又来了:为什么这里需要类型转换而不是S

java - this.getClass().getFields().length;总是返回 0

这个问题在这里已经有了答案:javareflectiongetFieldsforprivatemember|accessingobjectnamevaluedynamically(2个答案)关闭9年前。我正在尝试获取特定类中的字段数。然而,我使用的技术不起作用,总是返回0:this.getClass().getFields().length;如何获取特定类的字段数?

c# - Java 的 getClass()、isAssignableFrom() 等的 c# 等价物是什么?

我正在从Java转换为C#,代码类似于:ClassrefClass=refChildNode.getClass();ClasstestClass=testChildNode.getClass();if(!refClass.equals(testClass)){//Dosomething}和其他地方使用Class.isAssignableFrom(Classc)...和类似的方法是否有类比较、属性和代码绕过的直接等价物表?(只是为了停止来自IDE的关于泛型的警告。我们将不胜感激更好的解决方案) 最佳答案 TyperefClass=re

java - ClassLoader.getSystemResourceAsStream 和 getClass().getResourceAsStream() 的区别

给定这段代码:/*1*/InputStreamin1=ClassLoader.getSystemResourceAsStream("foobar.txt");/*2*/InputStreamin2=this.getClass().getResourceAsStream("/foobar.txt");两者是否返回相同的资源(我认为答案是"is")?它们都访问“相同”的类路径吗?为什么#1中的方法名称是“getSystemResourceAsStream”,而对于#2它只是“getResourceAsStream”?谢谢 最佳答案 关键