JAVA,为啥我不能引用gson包?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA,为啥我不能引用gson包?相关的知识,希望对你有一定的参考价值。
我已经在环境变量中定义了路径了,而且4个依赖包也放进lib里了啊
gson是第三方包,最好的方式是你在你的IDE里面引入,我不知道你用的是eclipse还是idea,如果是idea,打开你当前项目的project Structure选项,点击最右侧的加号,
然后在你的本地目录中选择具体的jar包,
如果你用的是eclipse,也是一样的,要去设置你的项目依赖jar包,这些网上都可以搜到的。
追问我不是用intellj或eclipse的…
参考技术A1、首先不是很建议您使用blueJ这种IDE,虽然它不那么耗内存但是对开发者不是很友好,建议使用IDEA或者eclipse类的工具。
2、blueJ有一个外部依赖管理的配置,需要将jar包移到此处
Build Path>> add external jar
您可尝试。
原因是你的CLASSPATH中的路径没有用分号分隔.
追问额,还是不行啊
追答你用的什么Java编辑软件,如果是eclipse,需要把gson包复制lib目录下,然后通过"Build Path""Configure Build Path...""Libraries""add JARs..."导入到eclipse中.
你用的什么Java编辑软件,如果是eclipse,需要把gson包复制lib目录下,然后导入到eclipse中.
参考技术C 建议学习下maven ,现在这种方式引用包的方式真没了,也别手动导包,太浪费时间了。 参考技术D 这个电脑也太乱了吧Java - 为啥另一个包中的子级无法通过父级引用访问父级的受保护方法?
【中文标题】Java - 为啥另一个包中的子级无法通过父级引用访问父级的受保护方法?【英文标题】:Java - Why Child in another package cannot access parent's protected method through parent reference?Java - 为什么另一个包中的子级无法通过父级引用访问父级的受保护方法? 【发布时间】:2020-08-09 16:29:54 【问题描述】:我在两个不同的包中有两个类:
package package1;
public class ParentClass
public void testPublic()
protected void testProtected()
package package2;
import package1.ParentClass;
public class ChildClass extends ParentClass
void test()
ParentClass par = new ParentClass();
par.testProtected(); // Line 1 : ERROR: testProtected() has protected access in ParentClass
testProtected(); // Line 2 : No error
ChildClass ch = new ChildClass();
ch.testProtected(); // Line 3 : No ERROR
testProtected(); // Line 4 : No error
我能够理解为什么在调用testProtected() -- Line 2
时会出现NO ERROR,因为ChildClass
认为这个方法继承自ParentClass
。
并且不知何故能够理解为什么它在调用par.testProtected() -- Line 1
时抛出错误,因为par
是一个不同的对象,并且当前对象无法访问其他对象的父对象的受保护方法。
但是当引用类型仅为 ChildClass 时,ChildClass 的对象如何访问相同的方法ch.testProtected() -- Line 3
(其他对象的父对象的受保护方法)?
【问题讨论】:
不。未在 ChildClass 中定义。仅在 ParentClass 中定义为受保护。 【参考方案1】:您看到的错误完全合理。
当您执行以下操作时
ParentClass par = new ParentClass();
par.testProtected();
您尝试访问testProtected
,就好像它是ParentClass
的公共API 的一部分一样,就是这样,您正在从另一个包调用ParentClass
的受保护方法在该类的实例上。在扩展类中调用它并不重要,重要的是它是从另一个包中调用的。
现在,如果你这样做了
ChildClass ch = new ChildClass();
ch.testProtected(); // Line 3
testProtected(); // Line 4
您不会看到任何错误。为什么?
在第 3 行中,您正在访问一个 ChildClass
类实例在 ChildClass
内的方法,因此这是合法的。即使您在ChildClass
中有一个私有方法childMethod
,您也可以使用ch.childMethod()
。
在第 4 行中,您通过this
引用(隐式)访问testProtected
,这意味着它通过ChildClass
调用该方法,这也是合法的。
请参阅此相关帖子:What is the difference between public, protected, package-private and private in Java?(提示:所述表格中的最后一行)
【讨论】:
明白。总的来说,Protected 比定义上看起来要复杂一些。定义过度简化了它。它与其他访问修饰符不相称。与其说“可以通过在不同包中扩展 ChildClass 来访问受保护成员”的一般性声明,不如说“只能在不同包中扩展 ChildClass 成员中访问自己的(此对象的)受保护成员”。 @DebashishBHARALI 私有方法也会出现同样的问题。如果你有一个带有私有方法bar()
的类型Foo
,并且你最终得到var f = someFooType()
,其中f
的类型被推断为? extends Foo
,那么即使你调用f.bar()
也是一个编译错误'在课堂内Foo
。以上是关于JAVA,为啥我不能引用gson包?的主要内容,如果未能解决你的问题,请参考以下文章
eclipse java项目中明明引入了jar包 为啥项目启动的时候不能找到jar包
为啥我用eclipse 编java 引用 import net.sf.jasperreports.engine.*;包出错呢?
Java - 为啥另一个包中的子级无法通过父级引用访问父级的受保护方法?