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

为什么静态方法不能使用this

JVM的运行时数据区中有个虚拟机栈(或Java栈),它的里面是由栈帧'叠加'而成.栈帧由局部变量表,操作数栈,动态连接,方法返回地址等组成. 那么我们就从局部变量表角度解答下这个问题....下面是测试代码,一个静态方法query,一个普通方法shadow,这两个方法的参数和函数体完全一样. // 静态方法 public static void query(String year) {...int month = 12; String address = "Jiangsu"; System.out.println(address); } // 普通方法 public void...query方法的局部变量表,如下 shadow方法的局部变量表,如下 我们发现,非静态方法shadow的局部变量表中有this,而在静态方法query的局部变量表没有this....普通方法,它的局部变量表的第一个槽存放了this, 而静态方法的局部变量表没有存放this.

1.9K30

为什么 build 方法放在 State 而不是 StatefulWidget

老孟导读:此篇文章是生命周期相关文章的番外篇,查看源码的过程中发现了这一有趣的问题,欢迎大家一起探讨。...为什么 build 方法放在 State 而不是 StatefulWidget 呢?其中前2点是源代码的注释给出的原因,最后一点是我的一点个人理解。...试想一下,如果 build 方法放在 StatefulWidget ,则 AnimatedWidget 的 build 方法需要带一个 State 参数,如下: abstract class AnimatedWidget...闭包 this 指向异常 假设 build 方法 StatefulWidget ,StatefulWidget 的子类写法如下: class MyWidget extends StatefulWidget...如果 build 方法 State ,代码如下: class MyWidget extends StatefulWidget { final Color color; const MyWidget

87920
您找到你想要的搜索结果了吗?
是的
没有找到

Java为什么不同的返回类型不算方法重载?

本文已收录《Java常见面试题》:https://gitee.com/mydb/interview 方法重载是指在同一个类,定义了多个同名方法,但每个方法的参数类型或者是参数个数不同就是方法重载...doSomething } public void method(Integer id, String name) { // doSomething } } 为什么不同返回类型不算方法重载...: 那为什么返回类型不能做为方法签名的一部分呢?...匹配原则3:自动装/拆箱匹配 接下来将第二匹配原则的 long 方法也删除掉,实现代码如下: public class OverloadExample { public static void...总结 同一个类定义了多个同名方法,但每个方法的参数类型或者是参数个数不同就是方法重载。方法重载的典型使用场景是 String 的 valueOf 方法,它有 9 种实现。

3.3K10

为什么要重写hashcode和equals方法?初级程序员面试很少能说清楚。

2 为什么要重写equals和hashCode方法 当我们用HashMap存入自定义的类时,如果不重写这个自定义类的equals和hashCode方法,得到的结果会和我们预期的不一样。...这是符合逻辑的,但从当前结果看,26行的返回结果不是我们想象的那个字符串,而是null。 原因有两个—没有重写。第一是没有重写hashCode方法,第二是没有重写equals方法。...由于我们Key对象里没有定义equals方法,系统就不得不调用Object类的equals方法。...由于Object的固有方法是根据两个对象的内存地址来判断,所以k1和k2一定不会相等,这就是为什么依然26行通过hm.get(k2)依然得到null的原因。...3 对面试问题的说明 由于项目里经常会用到HashMap,所以我面试的时候一定会问这个问题∶你有没有重写过hashCode方法

34860

Vue3学习笔记(五)——路由,Router

最简单的方法就是路径添加一个静态部分来区分它们: const routes = [ // 匹配 /o/3549 { path: '/o/:orderId' }, // 匹配 /p/books...TIP 确保转义反斜杠( \ ),就像我们对 \d (变成\\d)所做的那样, JavaScript 实际传递字符串的反斜杠字符。...,表示历史堆栈前进或后退多少步,类似于 window.history.go(n)。...因此 vue-router 提供了如下两个便捷方法:① router.back()⚫ 历史记录,后退到上一个页面 ② $router.forward() ⚫ 历史记录,前进到下一个页面 3.6...因此,全局前置守卫,程序员可以对每个路由进行访问权限的控制: 6.2 守卫方法的 3 个形参 全局前置守卫的回调函数接收 3 个形参,格式为: 6.3 next 函数的 3 种调用方式 参考示意图

8.4K30

c++11 mutex互斥量

头文件定义。 mutex类提供的方法主要有: lock:锁定互斥。若另一线程已锁定互斥,则到 lock 的调用将阻塞执行,直至获得锁。...其提供的方法主要有: 成员函数 作用 lock 锁定互斥,若互斥不可用则阻塞 。 try_lock 尝试锁定互斥,若互斥不可用则返回 。...try_lock_for 尝试锁定互斥,若互斥指定的时限时期中不可用则返回。 try_lock_until 尝试锁定互斥,若直至抵达指定时间点互斥不可用则返回 。 unlock 解锁互斥。...其提供的方法如下: 成员函数 作用 lock 锁定互斥,若互斥不可用则阻塞 。 try_lock 尝试锁定互斥,若互斥不可用则返回 。...同时,我们使用lock的时候一定要记得unlock,否则会造成死锁,后面我们也将会继续介绍C++11unique_lock和lock_guard可以避免死锁问题。

19670

用Vue.js开发一个电影App的前端界面

一个电影预告片屏幕,电影播放时显示电影的预告片。 可以将电影添加到收藏夹 我们将创建应用程序,让页脚随时出现,而首页、电影和电影预告片将共享相同的屏幕。...$route.params.id] } } 我们用watch看路径然后有任何变化调用组件的selectMovie方法。...该方法selectMovie简单更新selectedMovie参数用新电影的选择。当用户从一个电影组件切换到另一个电影组件(即开关电影)时,这是必须处理的。...我们引入了另一个router-link,,影片的播放按钮,创建一个目标位置的'/' + $route.params.id + '/trailer'。...添加到收藏夹 movies的每一个电影对象都有一个favorite的布尔值。我们将使用这个触发器来表示一个电影是否被添加到收藏夹

4K10

学会这个,再也不怕Python环境安装 (CentOS 6 Python2.7 & Python3.7)

install 复制代码 最新方法(并不适用所有人) 这也是官方文档说明的方法, 但是对于某些操作系统及Python版本不会成功 pip官方文档 # 下载安装脚本 cd /opt/ curl https...你问我为什么不直接上Python3.7+,不为什么,就是想搞事情(因为公司项目不支持python3,且必须是python2.7以上,后续升级3.7)话不多说,看下面命令: # step 1 cd /opt...in Python is not available ..../configure过程,如果没有加上–with-ssl参数时,默认安装的软件涉及到ssl的功能不可用,刚好pip过程需要ssl模块,而由于没有指定,所以该功能不可用。...那么如果你有疑问可以底部留言评论,我会一一解答,顺便也回忆一下我在这个过程忘记了的事。

1.7K30

父组件vuex方法更新state,子组件不能及时更新并渲染的解决方法

场景: 我实际用到的是这样的,我父组件引用子组件related,父组件调用获取页面详情的方法,更新了state值related,子组件根据该related来渲染相关新闻内容,但是页面打开的时候总是先加载子组件...,子组件渲染的时候还没有获取到更新之后的related值,即使子组件watch该值的变化依然不能渲染出来子组件的相关新闻内容。...我的解决办法: 父组件像子组件传值,当父组件执行了获取页面详情的方法之后,state值related更新,然后传给子组件,子组件再进行渲染,可以正常获取到。...$route.params.id, topicType:"news", contentStatus:false, curHeight:0,...$route.params.id } } } 效果如图: ?

2.2K40

为什么Java类的成员变量不能被重写?成员变量Java能够被重写么?不会重写成员变量,而是隐藏成员变量访问隐藏域的方法

这篇文章讨论了Java面向对象概念中一个基本的概念--Field Hiding(成员变量隐藏) 成员变量Java能够被重写么?...这是为什么呢?...意思就是: 一个类,子类的成员变量如果和父类的成员变量同名,那么即使他们类型不一样,只要名字一样。父类的成员变量都会被隐藏。子类,父类的成员变量不能被简单的用引用来访问。...其实,简单来说,就是子类不会去重写覆盖父类的成员变量,所以成员变量的访问不能像方法一样使用多态去访问。...访问隐藏域的方法 就是使用父类的引用类型,那么就可以访问到隐藏域,就像我们例子的代码 就是使用类型转换System.out.println(((Super)c1).s); 翻译自http://www.programcreek.com

3.5K40

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(九)再把内容页面渲染出来

我们列表,我们使用的是 Header 注意的组件命名方式,为什么我这边用了 myHeader 注意的组件命名方式呢?...$route.params.id, 这一句。 还记得我们先前是怎么配置路由的吗?忘记了?...参考文档: 《动态路由匹配》 我们需要从我们的 url ,来获取我们的 id 然后根据这个 id 来进行数据的查询。 好,想起来了。那么我们已经 url 包含了这个 id 了。...不用想很多复杂的事情,vuerouter 早就给我们准备了解决方法了。 我们可以项目中打印如下代码: console.log(this....所以,我这边采用了字符串拼接的方法,'topic/' + this.id 来得到我们真正想要请求的接口数据。 好,到这里为止,我们已经非常顺利的把列表页面和内容页面已经渲染出来了。希望你也成功了!

693100

高可用的K8S集群部署方案

可以看出这边主要的工作Master节点,Worker节点根据具体需求随意增减就好了。 Master节点的高可用拓补官方给出了两种方案。...将pod调度到具体的节点上(一个master集群只会有一个节点处于激活状态) 可以看到除了apiserver外都只允许一个 实例处于激活状态(类HBase)运行于其它节点上的实例属于待命状态,只有当激活状态的实例不可用时才会尝试将自己设为激活状态...(这边需要注意的是master依赖etcd,如果etcd不可用那么master也将不可用) Master组件说明: https://kubernetes.io/docs/concepts/overview...为什么打引号?因为还没有进行测试和验证,下面给出我列出的验证清单 [n7z6dp9zoa.png] 还有涉及的BGP相关的验证不在此次文章内容,后续会为大家说明。...写在最后 还有一点需要注意的是物理机的可用性,如果这些虚拟机全部一台物理机上那么还是存在“单点问题”。这边建议至少3台物理机以上。 为什么需要3台物理机以上?

2.6K30
领券