首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当我在不同的类中从构造函数转到主方法时,我丢失了数据。这是怎么回事?

当您在不同的类中从构造函数转到主方法时丢失数据的原因可能是由于数据的作用域或生命周期的问题。以下是可能导致数据丢失的几种常见情况:

  1. 数据作用域问题:如果您在构造函数中创建了一个局部变量,并且该变量在构造函数结束后就不再可用,那么在主方法中就无法访问该变量。解决方法是将变量声明为类的成员变量,以便在整个类中都可以访问。
  2. 对象引用问题:如果您在构造函数中创建了一个对象,并将其赋值给一个局部变量,然后在主方法中尝试访问该对象,但发现对象为空或未初始化,那么可能是因为对象引用丢失。这可能是由于对象的作用域问题或者在构造函数中未正确初始化对象。解决方法是确保对象的作用域正确,并在构造函数中正确初始化对象。
  3. 数据传递问题:如果您在构造函数中创建了一个对象,并将其传递给主方法,但在主方法中无法正确接收到该对象,那么可能是由于参数传递的问题。请确保在构造函数和主方法之间正确传递对象,并检查参数类型和顺序是否匹配。
  4. 数据持久化问题:如果您在构造函数中创建了一个对象,并对其进行了修改,但在主方法中发现对象的状态未被保留,那么可能是由于数据持久化的问题。请确保在构造函数中对对象进行的任何修改都能正确地保存和传递给主方法。

总结起来,当您在不同的类中从构造函数转到主方法时丢失数据,可能是由于作用域、对象引用、数据传递或数据持久化等问题导致的。您可以仔细检查代码,确保数据在不同类之间正确传递和保留。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

基础 | 详细图解jQuery对象,以及如何扩展jQuery插件

因此当我们直接使用$('#test')创建一个对象时,实际上是创建了一个init的实例,这里的正真构造函数是原型中的init方法。...也就是说,当我们通过jQuery.extend扩展jQuery时,方法被添加到了jQuery构造函数中,而当我们通过jQuery.fn.extend扩展jQuery时,方法被添加到了jQuery原型中。...其实在上一篇文章中,关于封装一个对象,我跟大家分享了一个非常非常干货,但是却只有少数几个读者老爷get到的知识,那就是在封装对象时,属性和方法可以具体放置的三个位置,并且对于这三个位置的不同做了一个详细的解读...而在实现jQuery扩展方法的想法中,一部分方法需要扩展到jQuery构造函数中,一部分方法需要扩展到原型中,当我们通读jQuery源码,还发现有一些方法放在了模块作用域中,至于为什么会有这样的区别,建议大家回过头去读读前一篇文章...直到在segmentfault中我在给题主建议如何快速学习一门诸如react/vue这样的流行框架时,找到了一个好一点的思路,于是就有了这样一系列文章,虽然它并不全面,很多知识没有涉及到,但是其实我是围绕最终通过模块化来构建自己代码这样一个思路来总结的

67320
  • 十三、jQuery过时的今天,你还会使用它吗

    ROOT.jQuery = ROOT.$ = jQuery; 因此当我们直接使用$('#test')创建一个对象时,实际上是创建了一个init的实例,这里的真正构造函数是原型中的init方法。...也就是说,当我们通过jQuery.extend扩展jQuery时,方法被添加到了jQuery构造函数中,而当我们通过jQuery.fn.extend扩展jQuery时,方法被添加到了jQuery原型中。...上面的例子中,我也简单展示了在jQuery内部,许多方法的实现都是通过这两个扩展方法来完成的。...其实在上一篇文章中,关于封装一个对象,我跟大家分享了一个非常非常干,但是却只有少数几个读者大佬get到的知识,那就是在封装对象时,属性和方法可以具体放置的三个位置,并且对于这三个位置的不同做了一个详细的解读...在实现jQuery扩展方法时,一部分方法需要扩展到构造函数中,一部分方法需要扩展到原型中,当我们通读jQuery源码时,还发现有一些方法放在了模块作用域中,至于为什么会有这样的区别,建议大家回过头去读读前一篇文章

    1.4K20

    架构探索之会话状态、Web Farm、负载均衡器

    我还介绍了实时生产环境中会话行为的细节。希望您能喜欢这篇文章并提供宝贵的建议和反馈。 什么是Session? Web是无状态的,这意味着每次将页面发布到服务器时都会重新创建网页类的新实例。...以下是使用会话的基本优点和缺点。在稍后的时间点,我详细描述了每种类型的会话。 优点: 它有助于在整个应用程序中维护用户状态和数据。 这很容易实现,我们可以存储任何类型的对象。 分开存储客户数据。...由于涉及序列化和反序列化的开销,这种方法有几个缺点,它也增加了数据访问的成本,因为每次用户检索会话数据时,我们的应用程序都会遇到不同的进程。 ?...它将数据保存在一个集中的位置(数据库)。 当我们需要实现更安全的会话时,我们应该使用SQLServer会话模式。 如果出现频繁的服务器重启,这是一个理想的选择。...这是网络农场和网络花园场景的完美模式(我在后面详细解释了这一点)。 当我们需要在两个不同的应用程序之间共享会话时,我们可以使用SQLServer会话模式。

    1.4K30

    单点登录是怎么回事

    一、网站登录是怎么回事 在一个普通的网站开发中,Web Server怎么知道当前用户是谁? ? 1. 典型WEB 在典型的WEB应用中,应用大致包含三类数据:用户数据、权限数据、业务数据。...③ 用户登录后访问子系统时更新个人信息 用户登录后,跳转到子系统时,从主系统中查询当前用户的信息,并同子系统进行比较,如有变更则更新本地用户信息。...② 将权限统一管理 在用户管理主系统中,同时定义角色、权限等信息,在主系统中实现用户权限设置,并在用户跳转到子系统时,能够准确的读取到用户在本系统中的授权信息。...子系统读取到userId这个cookie后,知道这是登录用户的id,从数据库中读取对应用户的信息并保存到Session中即可。...子系统读取到这个userId后,知道这是登录用户的id,从数据库中读取对应用户的信息并保存到Session中即可。

    1.6K31

    一次有意义的前端面试总结

    获得面试机会 该从哪里讲起呢,就从看到那个公司的招聘信息讲起吧,当我还在江西老家的时候就打算年后来深圳找工作,所以我在来深圳之前就通过Boss直聘和一些技术社区查找深圳的前端开发工程师的招聘信息,并投递了部分简历...,再安排其他时间面试,我到了深圳后发Email告诉对方我来深圳了,在元宵节假期结束后的的第一天上班时,对方发来了回复邮件,让HR为我安排面试时间,下午HR便打电话给我,通知我去面试,并通过Email将面试的时间和地址发给了我...还有一题要求写出add(4)(5)的实现函数,看到这题后我一脸懵逼,函数不都是只有一个括号吗,这里怎么出现了两个括号,面试结束后我通过在一个前端交流群里问了这个问题,这题考察的是函数柯里化,还有一题要求使用...我:localStorage 可以实现数据的永久保存,sessionStorage 存放的数据,当浏览器关闭后会自动丢失。 面试官: 知道元素层叠吗?...我:你能不能在纸上写一下(当时没听懂),两个都可以让对象调用函数,其中apply中的第一个参数为调用函数的对象,第二个参数为函数传递的数据,其中apply传递数据是数组,call巴拉巴拉。

    42820

    【笔记】《C++Primer》—— 第19章:特殊工具与技术

    当我们重载这些函数时,我们需要定义在全局作用域或类作用域中,当我们将这些函数定义为类成员时,它们将是隐式静态的,我们无需声明static。...,编译器只能保证不同类型的名字是不同的 RTTI的关键用处在于当我们想为具有继承关系的类实现相等运算符时,如果我们想到用虚函数让派生类和基类返回比较的结果,但是我们的equal为了保证接受不同的类型必须接受基类引用...的匿名定义一般就是用在包装类中的 C11允许了union有含有构造和拷贝函数的类成员,但是当我们对这样的成员进行更改时就需要自己允许其构造或析构函数了,这种状态控制一般也是通过外面包装的类的接口函数和判别式来控制的...,让外部访问不同成员时按照情况析构union目前的成员,构造新的成员 19.7 局部类 类似于嵌套类,局部类是定义在函数内部的类,局部类的定义只在定义它的作用域中可见 局部类的特点是其所有成员都必须在类内完成定义...典型的不可移植特性是2.1中说到的算术类型在不同机器上的差异 类可以将其数据成员定义为位域(bit-field),一个位域中含有一定数量的二进制位数据,定义方式是Bit name: bitCount;

    85340

    AOP编程之AspectJ实战实现数据无痕埋点

    看到没有,在LinearLayoutTestActivity中除了加载布局的操作外,我并没有干其他的什么,但当我点击菜单跳转到该Activity时,onCreate的方法和参数被打印出来,甚至LinearLayoutTestActivity...这是在RelativeLayoutTestActivity类中调用testAOP()我们的源码: 下面是反编译的代码,读者只要关注testAOP()方法即可 我们不难发现我们的代码轻松被AspectJ...AspectJ通过在目标类里面加入Closure(闭包)类,该类构造函数包含了目标类实例、目标方法参数、JoinPoint对象等信息,同时该类作为切点原方法的执行代理,该闭包通过Aspect类调用Around...” 注解的方法和构造函数。...5、MyLinearLayout类 可,我在这里给onMeasure方法上注解,当我进入LinearLayoutTestActivity 类时,运行如下: ?

    2.9K20

    Java系列:构造函数重载和普通函数的那些事~

    上次我们简单介绍了Java的构造函数,对于构造函数我想大家应该也有了一定的了解,那么今天我们来看看构造函数的普通函数有那些区别? Java上篇:Java:对象and类?...类中可以有很多个构造函数,但我们知道它们函数中的参数是不一样的;多个构造函数加上构造函数的重载,这样可以衍生出很多个函数,当我们在初始化对象时,就可以表达出对象的多种初始化行为,这也是构造函数重载的一个作用...上面说完匿名构造函数和构造函数,似乎我们忘掉了普通函数,不捉急,这里我们就来说说普通函数,关于Java中的普通函数,和其他语言有一点点的不同,那就是Java中的函数不能单独存在,必须要定义在类体中。...但需要注意的是方法的定义不能产生嵌套包含关系,不能随便套娃哦~ 关于普通函数的返回值,在方法中定义的返回值与传递的参数类型均为Java定义的数据类型,在方法中也可以进行返回数据的处理,简单格式如下: return...返回数据类型 void 不返回数据类型 当我们定义函数方法后,在主函数中便会对函数进行调用,在Java类中方法定义了,它是不会自动执行的,如果想要执行,应进行方法调用。

    81740

    如何通俗的理解面向对象编程

    在这个名为Python Shorts的系列文章中,我将解释Python提供的一些简单但非常有用的构造、一些基本技巧以及我在数据科学工作中经常遇到的一些用例。 这篇文章是关于解释OOP的外行方式。...类是怎么回事?我可以用函数做同样的事情吗? 是的,你可以。但是与函数相比,类确实为你提供了很多功能。举个例子,str类有很多为对象定义的函数,我们只需按tab键就可以访问这些函数。...从Wikipedia来看,封装是指将数据与操作该数据的方法捆绑在一起,或者限制对对象某些组件的直接访问。 所以这里str类绑定了数据(“Hello!)以及所有对我们的数据进行操作的方法。...我们的账户余额如预期增加了100。所以这是我们调用的同一个函数。现在,只有self和myAccount是完全相同的对象时,才会发生这种情况。我调用的时候我的账户存款(100)。...简单地说,iPhone1现在可以访问类iPhone中定义的所有变量和方法。 在本例中,我们不必进行任何代码复制,因为我们已经从父类iPhone继承(获取)了所有方法。因此,我们不必再次定义调用函数。

    1.3K20

    Flutter学习笔记:BottomNavigationBar实现多个Navigation

    最近我研究了一下Flutter,但是在使用Navigator的时候遇到了一个很头痛的问题,就是当我们去来回切换导航按钮时,Flutter会重新build,从而导致控件重新Build,从而会失去浏览历史。...在第1-4行,我们定义了两个路由名称:/和/ detail 在第7行,我们定义了TabNavigator的构造函数。 这需要一个navigatorKey和一个tabItem。...在第22行,我们定义了一个_routeBuilders方法,它将``WidgetBuilder与我们定义的两条路径中的每一条相关联。...1_4_rjL1Hh_zKHJHjO4MNOIg.gif app消失了,我们回到了主屏幕! 这是因为我们没有指定应该如何处理后退按钮。...1_qQW2iGXiWL2F1tu6cLQfwg.gif 需要注意的一点是,当我们在Android上推送新路线时,会从底部滑入。 相反,惯例是在iOS上从右侧滑入。

    4.3K20

    java数组 初始化_用Java初始化数组「建议收藏」

    与C编程语言类似,Java数组从元素零开始,一直扩展到元素 – 1 。 我们可以在上面看到ia的每个元素都设置为零(似乎是通过数组构造函数)。 那是吗?...例如,在某些几何计算中,我们可能需要将二维数组初始化为单位矩阵(除沿主对角线的那些零以外的所有零)。...但是,如果在处理完所有数据之前不知道大小怎么办? 这是否意味着我们必须处理一次以找出数组的大小,然后再次处理? 这可能很难做到,尤其是如果我们只有一次机会使用数据时。...例如,可以将数组提供给ArrayList构造函数,或者在编译时知道初始元素时,可以使用List.of()和Arrays.asList()方法。...get ( "three" ) ; 在我的世界中, 地图可用于将第三方数据集中出现的字符串转换为我的数据集中的一致代码值。

    1.6K20

    【愚公系列】软考高级-架构设计师 008-存储技术(磁盘)

    数据备份和恢复:磁盘用于备份重要数据,以便在数据丢失或系统故障时进行恢复。 多媒体存储:用于存储大量的多媒体内容,如视频、音乐和图片。...2.练习 1、在磁盘调度管理中,通常( )(2019下半年试题) A.先进行旋转调度,再进行移臂调度 B.在访问不同柱面的信息时,只需要进行旋转调度 C.先进行移臂调度,再进行旋转调度 D.在访问同一磁道的信息时...先进行旋转调度,再进行移臂调度: 这个顺序是不合逻辑的,因为在磁头没有移动到指定的柱面之前,旋转调度是没有意义的。 B. 在访问不同柱面的信息时,只需要进行旋转调度: 这是错误的。...首先,磁头需要移动到目标柱面上(移臂调度),然后等待磁盘旋转,使目标扇区旋转到磁头下方(旋转调度)以进行数据的读写。 D. 在访问同一磁道的信息时,只需要进行移臂调度: 这个说法不正确。...这反映了磁盘访问过程中的自然顺序,首先是磁头移动到正确的柱面上,然后磁盘旋转到正确的位置以访问数据。这个过程是优化磁盘访问时间和提高磁盘I/O性能的关键。

    19000

    译 | 你到底有多精通 C# ?

    重载方法中的 null 值 在转到其他话题之前,让我们仔细了解在调用参数数量相同但类型不同的重载方法时如何处理空值。...类初始化 最佳实践建议尽可能避免类构造函数中的类初始化,以防止异常。 所有这些对于静态构造函数来说都更加重要。 您可能知道,当我们尝试在运行时实例化静态构造函数时,它在实例构造函数之前调用。...这是实例化任何类时的初始化顺序: 静态字段 (仅限第一次类访问: 静态成员或第一个实例) 静态构造函数 (仅限第一次类访问: 静态成员或第一个实例) 实例字段 (每个实例) 实例构造函数 (每个实例)...然而,该示例说明了为什么从构造函数调用虚拟方法可能很危险。当调用它们时,它们在中定义的类的构造函数可能尚未调用,因此它们可能会出现意外行为。 多态性 多态性是不同类以不同的方式实现相同接口的能力。...话虽如此,但当我们在调用该方法之前向下转换实例时,你能想出一种方法来调用不同的方法吗?

    84240

    Windows Phone 8.1 新特性 - 页面导航

    当按下回退键时,导航源页面会被从回退栈中取出显示,这样我们就完成了一个完整的页面导航过程。...当我们在项目中新建一个基本页(BasicPage)时,Common文件夹中会出现NavigationHelper类和其他一些辅助类。...而如果我们没有使用NavigationHelper 的话,页面是没有办法正常回退的,这是怎么回事呢,我们来看看NavigationHelper 的构造函数吧: public NavigationHelper...最有还有一点要说明,Windows Phone 8.1 中,页面导航回退时,导航源页面会重新Load,对于需要加载数据等的页面,这种重新加载的结果并不是我们想看到的。...这里我们可以使用 NavigationCacheMode 来避免这一现象,我们在页面构造方法中对它进行设置,它是一个枚举类型,有三种枚举值: Disabled 不缓存页面,导航返回时重新加载页面 Required

    1K70

    虚函数

    在继承体系中,构造的顺序就是从基类到派生类,其目的就在于确保对象能够成功地构建。构造函数同时承担着虚函数表的建立,如果它本身都是虚函数的话,如何确保vtbl的构建成功呢?   ...注意:当基类的构造函数内部有虚函数时,会出现什么情况呢?结果是在构造函数中,虚函数机制不起作用了,调用虚函数如同调用一般的成员函数一样。当基类的析构函数内部有虚函数时,又如何工作呢?...当某个类的析构函数被调用时,其派生类的析构函数已经被调用了,相应的数据也已被丢失,如果再调用虚函数的派生类的版本,就相当于对一些不可靠的数据进行操作,这是非常危险的。...在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例(注:抽象类即有纯虚函数的类不能被实例化。)...如下所示:   注意:在上面这个图中,我在虚函数表的最后多加了一个结点,这是虚函数表的结束结点,就像字符串的结束符“\0”一样,其标志了虚函数表的结束。

    88431

    回答一下这 10 个最常见的 Javascript 问题

    另外,需要注意的是,在声明const时,必须同时初始化它,因为后面不可在更改它。 Javascript中的对象是什么 对象只是一种特殊的数据。对象拥有属性和方法。...当我们调用函数时,括号中传递的值称为参数。...中的构造函数是什么 构造函数是一种特殊的方法,用于初始化和创建 Javascript 类中的对象。...JavaScript 中的构造函数和其它语言中的构造函数是不同的。 通过 new 关键字方式调用的函数都被认为是构造函数。 在构造函数内部,this 指向新创建的对象 Object。...除此之外,我们还必须在类内部添加constructor()方法,该方法在每次初始化类时都会调用。 在constructor()方法内部,我们添加了类的属性。

    78020

    【xss-labs】xss-labs通关笔记(一)

    在这里关于如何搭建靶场的就不再赘述了,我这里是在本地用phpstudy来搭建的。 打开该靶场首页显示如下: ? Level 1 按照首页提示点击图片来到level1,页面显示如下: ?...我们仔细观察一下url地址的构造就可以发现这里是向服务器提交了一个值为”test”的name参数。并且从页面回显可以看到不仅将name参数的值显示在了页面当中,还显示了name参数值的字符长度。...想通了该页的大致功能之后就可以构造恶意语句进行测试了,这里还是沿用上一关中的弹窗代码,操作如下: ? 但是想象中的弹窗并没有出现,恶意代码直接被打印到了页面之上。这是怎么回事呐?...可以看到浏览器成功弹窗了,说明我们提交的恶意代码被浏览器执行了。来看看此时的网页源码 ? 从图中可以看出,在标签中的恶意代码依然被编码了。...但是在箭头3处却是直接将变量值插入到了标签的value属性值中,因为这里并没有对敏感字符进行编码和过滤,所以可以通过构造实现XSS攻击。 Level 3 跳转到第三关的页面显示如下 ?

    7.6K30

    通读审计之AACMS

    老样子,我们从 index.php 来进行代码审计。 ? 上来 require 一个文件,我们打开该文件看看里面是怎么玩儿的。 ? OK,可以看到定义了五个类。...不卖关子了,其实这里我们忽略一个问题,当我们new对象时,会进入到构造方法。来进行初始化操作。构造方法在php中有两种格式。1. __construct 魔术方法 2. 将成员方法定义为类名。...OK,admin.php入口文件的代码处理逻辑我们也搞清楚了,接下来我们开始挖掘漏洞。 0x03 宽字节注入漏洞 当我们安装该CMS时,我们可以注意到数据库字符集默认是GBK。...这个单引号是函数返回的,并不是外来的,所以不会被daddslashes影响。当我们在浏览器上直接提交?...虽然说插入点在input标签的value值中,PHP做了addslashes函数处理,但是这是在前台,(’)就算被转移成(\’),HTML也不会忽略他,还是把他当成实打实的引号解析。

    67820
    领券