草庐IT

THIS_MODULE

全部标签

java - Java 8 默认接口(interface)中 `this` 的静态类型是什么?

我正在为一个项目实现访问者模式,并意识到我可以通过让accept的默认实现如下来节省一些输入。publicinterfaceVisitable{defaultpublicvoidaccept(Visitorv){v.visit(this);}}但是,如果this的静态类型解析为Visitable,此实现将不起作用,那么在这种情况下this的静态类型是什么? 最佳答案 由于在您的上下文中,this用作参数类型,因此调用将在编译和运行时解析为Visitor#visit(Visitable)。因此,在这种情况下尝试创建默认方法不会有任何好

Java 9 : Possible to have 2 modules with same name on module path

是否可以在模块路径上有2个名称完全相同(但内容略有不同)的模块?据我所知,Java9编译器并没有提示它。我有2个模块声明如下:modulecom.dj.helper{exportscom.dj.helper;}两者都包含com.dj.helper包,但包内的内容不同。然后在我的主应用程序中,我希望导入此模块:modulecom.dj{requirescom.dj.helper;}同名的两个模块都在我的模块路径上。我希望在编译我的com.dj模块时,编译器会提示同一模块存在两次,但事实并非如此。这是否实际上意味着您的模块路径上可能有同一个jar的2个版本,而Java不知道要使用哪一个?

Java:替代传递 "this"作为构造函数参数以引用创建对象

我花了一段时间思考我所寻求的不同解决方案(我对Java还没有真正的经验),将它用于构造函数参数通常不是一个好的做法。我想做的是实例化JobGroupMod类的几个对象,对于每个JobGroupMod,我必须创建一定数量的JobMod对象,这些对象必须能够引用回生成它们的JobGroupMod对象。为了实现这一点,我将“this”传递给JobMod构造函数,但即使有效,它也不像正确的设计。publicclassJobGroupModimplementsJobGroup{publicJobGroupMod(Noden,SetclusterJobs){JobModj=newJobMod(n,

java - 在 Windows 8 上安装 Elasticsearch 5.0.2 -\config\jvm.options "was unexpected at this time"

我是StackOverflow的新手(尽管潜伏了很长时间)。我正在努力在我的笔记本电脑上安装elasticsearch。它是Windows8,我刚刚将java更新到Java8,并且我使用setJAVA_HOME设置了新路径。但是,每当我尝试在命令行上运行elasticsearch.bat文件时,我都会收到此错误:\elasticsearch-5.0.2\bin\..\config\jvm.options这时候出乎意料如有任何帮助,我们将不胜感激 最佳答案 我还尝试在我的Windows2016R2Datacenter(64位)上设置E

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

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

java - This() 与 Target() 方面

谁能解释一下this()和target()切入点在aspectj中的区别。我试着在别处找到这个,但似乎没有明确的答案。谢谢你 最佳答案 在匹配的连接点,this()是你所在的对象,target()是您正在调用/引用的对象。可能会出现混淆,因为在execution()的情况下连接点上的切入点匹配它们是同一件事——包含匹配的执行连接点的对象与运行你正在匹配的方法的对象相同。但在call()的情况下它们的连接点不同。进行调用的对象与调用该方法的对象不同。classA{publicvoidm(){Bb=newB();b.n();}}clas

java - 为什么Java静态方法可以调用构造函数,但不能引用this?

我的假设:静态方法不能调用非静态方法。构造函数是一种没有返回类型的方法。给定这个例子...publicclassMain{publicstaticvoidmain(String[]args){Mainp=newMain();//constructorcallk();//[implicit]`this`reference}protectedMain(){System.out.print("1234");}protectedvoidk(){}}此行打印1234:Mainp=newMain()这一行抛出异常:k()为什么示例代码会做这两件事?它们不会与我的上述假设冲突吗?我的假设是否正确?

maven 包管理平台-05-multi module 多模块

拓展阅读maven包管理平台-01-maven入门介绍+Maven、Gradle、Ant、Ivy、Bazel和SBT的详细对比表格maven包管理平台-02-windows安装配置+mac安装配置maven包管理平台-03-mavenprojectmaven项目的创建入门maven包管理平台-04-mavenarchetype项目原型maven包管理平台-05-multimodule多模块maven包管理平台-06-常用技巧实时更新快照/乱码问题/下载很慢/包依赖解决包冲突/如何导入本地jarmaven包管理平台-07-plugins常见插件介绍maven包管理平台-08-nexus自己搭建m

java - 在 setter 中使用 "this"

我看不出以下两种创建setter的方法之间有什么真正的区别,但我想知道我是不是太天真了。一个比另一个更受欢迎吗?publicvoidfooSetter(Stringbar){_bar=bar;}publicvoidfooSetter(Stringbar){this._bar=bar;} 最佳答案 在这种情况下没有语义差异,因为没有歧义。另一方面,如果您的实例字段也称为bar,则需要使用this来消除歧义:publicvoidfooSetter(Stringbar){this.bar=bar;}

javax.naming.NameNotFoundException : Name [jdbc/rhwebDB] is not bound in this Context. 无法找到 [jdbc]

我知道有很多关于此异常的问题,但是,我相信我已经尝试了很多天的所有方法,但还没有成功。由于这是一个生产服务器,我只能在午夜后处理它:(我有一个Tomcat应用程序。最近,我更新了连接池,以便使用Tomcat的jdbc-connectionpool。在我的Windows开发机器中,一切正常,但现在我正尝试在我的Linux服务器上实现它,每当我的应用程序尝试连接到MySQL时,我都会收到此异常(见标题)。我正在使用“EasyTomcat7”,它应该与普通版本的Tomcat相同,只是它带有CPanel软件。我只需要此数据库可用于此应用程序(而不是多个应用程序)。这是我的Java数据库类:pu