- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题是为什么 ElementModel 构造函数中的代码 this.getClass().getName() 会生成 BaseModel$1 作为结果而不是 ElementModel?
此外,您会注意到 BaseModel 构造函数中的相同代码将为您提供 CellModel。
简单地说,我希望代码在 ElementModel 构造函数中调用时会给我 ElementModel。在 BaseModel 构造函数中调用 BaseModel 时。然而,事实并非如此。
此外,您还会注意到,在方法 demo2 中,代码 st.getClassName() 将生成 ElementMode,这是预期的结果。
因此我在这里很困惑。任何人都可以阐明这一点,我们将不胜感激。
基础:
public class BaseModel<E> {
protected ElementModel<E> addedElements;
public BaseModel() {
String msg = this.getClass().getName();
System.out.println("BaseModel::BaseModel.......this.getClass.getName(): "+msg);
addedElements = new ElementModel<E>(){};
}
}
元素模型:
public class ElementModel<E> {
public ElementModel() {
String msg = this.getClass().getName();
System.out.println("ElementModel::ElementModel.......this.getClass.getName(): "+msg);
}
public void add(E e) {
demo1();
demo2();
}
private void demo1() {
System.out.println("\n==================== Begin demo1 ========================");
String msg = this.getClass().getName();
System.out.println("ElementModel::demo1.......this.getClass.getName(): "+msg);;
msg = this.getClass().getSimpleName();
System.out.println("ElementModel::demo1.......this.getClass.getSimpleName(): "+msg);
msg = this.getClass().getTypeName();
System.out.println("ElementModel::demo1.......this.getClass.getTypeName(): "+msg);
msg = this.getClass().toGenericString();
System.out.println("ElementModel::demo1.......this.getClass.toGenericString: "+msg);
StackTraceElement[] ste = Thread.currentThread().getStackTrace();
int i=0;
for(StackTraceElement st : ste)
{
System.out.println(i+++": "+st.toString());
}
System.out.println("==================== End demo1 ========================\n");
}
private void demo2() {
System.out.println("\n**************** Begin demo2 **************************");
String msg = this.getClass().getName();
System.out.println("ElementModel::demo2.......this.getClass.getName(): "+msg);
StackTraceElement[] ste = Thread.currentThread().getStackTrace();
for(StackTraceElement st : ste) {
if (st.getMethodName().equalsIgnoreCase("add")) {
System.out.println("ElementModel::demo2.......st.getClassName: "+st.getClassName());
System.out.println("ElementModel::demo2.......Thread.class.getName: "+Thread.class.getName());
}
}
System.out.println("**************** End demo2 **************************\n");
}
}
细胞模型:
public class CellModel<E> extends BaseModel<E> {
public CellModel() {
String msg = this.getClass().getName();
System.out.println("CellModel::CellModel.......this.getClass.getName(): "+msg);
addedElements.add(null);
}
}
主要测试:
public class TheTest extends Application {
@Override
public void start(Stage primaryStage) {
System.out.println("test");
CellModel<String> s = new CellModel<>();
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
最佳答案
new ElementModel<E>(){};
创建一个扩展ElementModel
的匿名内部类。 ElementModel
的构造函数打印实际类的名称,而不是 ElementModel
本身的名称。你应该写
new ElementModel<E>();
编辑匿名内部类的名称是BaseModel$1
,因为它是BaseModel
的匿名内部类。
关于java - 为什么 this.getClass().getName() 会产生与 StackTraceElement.getClassName() 不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50284701/
我有三个类(class) - One , Two extends One , Three extends Two 我必须编写一个方法来计算 ArrayList 中存在每个类的实例数量。 . Array
我有一些代码在 C++ 中有一个动态类系统,它有一个名为 GetClassName() 的成员,人们可以想象这是一个相当无害的名字。然而,当包含在带有 Windows header 的大型项目中时,一
我有一个 Java 应用程序,它的主窗口是一个 JFrame 子类。 有一个附加的分析器调用GetClassName对于这个窗口,它返回完全限定的类,即 com.package.subpackage.
本文整理了Java中org.apache.openjpa.persistence.XMLPersistenceMetaDataSerializer.getClassName()方法的一些代码示例,展示
本文整理了Java中co.cask.cdap.api.workflow.WorkflowSpecification.getClassName()方法的一些代码示例,展示了WorkflowSpecifi
本文整理了Java中org.osgi.framework.hooks.weaving.WovenClass.getClassName()方法的一些代码示例,展示了WovenClass.getClass
本文整理了Java中org.osgi.framework.hooks.weaving.WovenClass.getClassName()方法的一些代码示例,展示了WovenClass.getClass
本文整理了Java中org.osgi.framework.hooks.weaving.WovenClass.getClassName()方法的一些代码示例,展示了WovenClass.getClass
本文整理了Java中org.osgi.framework.hooks.weaving.WovenClass.getClassName()方法的一些代码示例,展示了WovenClass.getClass
本文整理了Java中org.osgi.framework.hooks.weaving.WovenClass.getClassName()方法的一些代码示例,展示了WovenClass.getClass
本文整理了Java中org.osgi.framework.hooks.weaving.WovenClass.getClassName()方法的一些代码示例,展示了WovenClass.getClass
本文整理了Java中edu.umd.cs.findbugs.ba.XField.getClassName()方法的一些代码示例,展示了XField.getClassName()的具体用法。这些代码示例
我的问题是为什么 ElementModel 构造函数中的代码 this.getClass().getName() 会生成 BaseModel$1 作为结果而不是 ElementModel? 此外,您会
MSDN上的描述有区别,但是我不明白文字是什么意思。 GetClassName 函数检索指定窗口所属的类的名称。RealGetWindowClass 函数检索指定窗口类型的字符串。 以windows
我是一名优秀的程序员,十分优秀!