一个很有趣的问题

hassanl 2011-08-21 10:36:32

public class SimpleEnumUse
{

Spiciness spiciness;

public SimpleEnumUse(Spiciness spiciness)
{
this.spiciness = spiciness;
}

}


今天遇到个很奇怪的现象,Spiciness spiciness;这样写不会警告!
但是要是改成 private Spiciness spiciness; 就是报警告“is not used”。
一时好奇,问问大家这个是怎么回事? 谢谢!!
...全文
224 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
song_wei_jun 2011-08-26
  • 打赏
  • 举报
回复
如果是public 那么可以内部调用,也可以外部调用

如果是private 只能内部调用,如果本类中的其他方法调用了这个私有方法就不会有提示了

否则肯定会警告----你写一个没有用的方法干嘛呢
gsy999 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 hassanl 的回复:]
Java code


public class SimpleEnumUse
{
Spiciness spiciness;

public SimpleEnumUse(Spiciness spiciness)
{
this.spiciness = spiciness;
……
[/Quote]
下面和程序不能编译?谁说的?public class SimpleEnumUse
{
private Spiciness spiciness;
public SimpleEnumUse(Spiciness spiciness)
{
this.spiciness = spiciness;
}
}

class Spiciness{
}


iambic 2011-08-23
  • 打赏
  • 举报
回复
这个是叫friendly吧。说实话自己的代码从来没用过这个权限。
walkman_22 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 hassanl 的回复:]
Java code

public class SimpleEnumUse
{

Spiciness spiciness;

public SimpleEnumUse(Spiciness spiciness)
{
this.spiciness = spiciness;
……
[/Quote]
顶~~~
flyingZippo 2011-08-23
  • 打赏
  • 举报
回复
那妞回答的真快。。。
lost_guy_in_scut 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 alexandertech 的回复:]

private只能在类内部使用,所以编译器能判断它将来未被使用是个多余变量

如果不是private,那未来在别的类中可能直接使用它,所以编译器就不能断定它一定是个多余变量
[/Quote]
顶一下好了。
树成 2011-08-22
  • 打赏
  • 举报
回复
private的构造主要目的是不让调用者显示的去实例化这个类的对象。
如果你有一个类,例如工具类,他的方法全部是static的,那么你就可以把这个类的构造声明成private,不让人构造。
或者你不希望别人随便的去构造一个实例,例如你的系统对这个类的实例有数量的严格控制,例如连接池,或者打开某种文件的个数,你只允许有10个这样的对象,所以你不能让人随便去new对象,你就要把构造声明为private,然后通过这个类本身的一个静态函数来生产实例或者重用实例。
luohuijun619 2011-08-22
  • 打赏
  • 举报
回复
这么多人回答,帮顶一个吧
daijope 2011-08-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 alexandertech 的回复:]

private只能在类内部使用,所以编译器能判断它将来未被使用是个多余变量

如果不是private,那未来在别的类中可能直接使用它,所以编译器就不能断定它一定是个多余变量
[/Quote]
给力!
老张-AI 2011-08-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 alexandertech 的回复:]

private只能在类内部使用,所以编译器能判断它将来未被使用是个多余变量

如果不是private,那未来在别的类中可能直接使用它,所以编译器就不能断定它一定是个多余变量
[/Quote]
++
打油的程序员 2011-08-22
  • 打赏
  • 举报
回复
private的构造函数很少见哦
如果你非要使用它,不如先了解一下单例模式。单例模式是最简单的设计模式,它的构造函数私有
风尘中国 2011-08-21
  • 打赏
  • 举报
回复
这是编译器检查的问题。
如果你什么也不写spiciness就是default的访问控制权限,而如果写了private 只有在本类当中可以使用。
在private的使用范围限制在本类,编译器很容易找本类到底用了没有,发现没有用,就能够很容易判定,因此可以产生警告。
而default权限是包访问权限,编译器没有那么“能干”,扫描包,所以在default权限下就没有warning
blueram 2011-08-21
  • 打赏
  • 举报
回复
呵呵,要是不说,还真没注意。
可能与eclipse的检查机制有关,要不就是类的访问限制有关
飞跃颠峰 2011-08-21
  • 打赏
  • 举报
回复
private只能在类内部使用,所以编译器能判断它将来未被使用是个多余变量

如果不是private,那未来在别的类中可能直接使用它,所以编译器就不能断定它一定是个多余变量

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧