我刚刚在Java中发现了本地类:
public final class LocalClassTest
{
public static void main(final String[] args) {
for(int i = 10; i > 0; i--) {
// Local class definition--declaring a new class local to the for-loop
class DecrementingCounter {
private int m_countFrom;
public DecrementingCounter(final int p_countFrom) {
m_countFrom = p_countFrom;
}
public void count() {
for (int c = m_countFrom; c > 0; c--) {
System.out.print(c + " ");
}
System.out.println();
}
}
// Use the local class
DecrementingCounter dc = new DecrementingCounter(i); …Run Code Online (Sandbox Code Playgroud) 如何获得项目提案以获取Kindle开发套件的访问权限?
从亚马逊的Request Access页面:
简要描述您打算在Kindle上构建的活动内容应用程序
我还没有项目规范,我只是想探索和实验.我想把它作为我的描述,但我不想被拒绝,因为我的项目没有充实.
人们描述了哪些类型的应用程序可以让他们访问KDK?有没有人因为"糟糕"的建议被拒绝访问?关于从亚马逊收听回来需要多长时间?
Josh Block的Effective Java(使用私有构造函数或枚举器强制执行Singleton属性)的第3项提到"虽然这种方法尚未被广泛采用,但单元素枚举类型是实现单例的最佳方式."
例:
public enum Elvis {
INSTANCE;
private final String[] favoriteSongs =
{ "Hound Dog", "Heartbreak Hotel" };
public void printFavorites() {
System.out.println(Arrays.toString(favoriteSongs));
}
}
Run Code Online (Sandbox Code Playgroud)
接下来:"这种方法在功能上等同于公共领域方法,除了它更简洁,免费提供序列化机制,并提供防止多个实例化的铁定保证,即使面对复杂的序列化或反射攻击."
我看到的最大的负面影响是:不是枚举不应该具有可变状态吗?使用具有状态的Singleton似乎很常见.
因此,自出版日期(2008年第2版)以来,这种模式实际上变得更加普遍吗?
我正在阅读约书亚布洛赫的"有效Java",第39项制作防御性副本,我有一些问题.我总是使用以下构造:
MyObject.getSomeRef().setSomething(somevalue);
Run Code Online (Sandbox Code Playgroud)
这是短的:
SomeRef s = MyClass.getSomeRef();
s.setSomething();
MyObject.setSomeRef(s);
Run Code Online (Sandbox Code Playgroud)
它总是有效,但我想如果我getSomeRef()正在返回副本,那么我的快捷方式将不起作用,MyObject如果使用快捷方式是否安全,我怎么知道隐藏的实现是否隐藏?
我从javadoc看到@SuppressWarnings注释适用于
TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE
Run Code Online (Sandbox Code Playgroud)
目标.为什么它也不适用于PACKAGE?
我有一些生成的代码,其中包含一些原始类型警告.我希望能够package-info.java为生成的类添加一个文件(在一个单独的物理目录中,但是相同的java包),它告诉eclipse忽略从包中生成的类发出的任何原始类型警告.
为什么不支持?是否有另一种方法可以抑制整个包装中的警告?
在14日科特林公案操作符重载,我很惊讶,当解决后,我看到了答案,看到的operator是修改不要求对compareTo方法:
data class MyDate(val year: Int, val month: Int, val dayOfMonth: Int) : Comparable<MyDate> {
override fun compareTo(other: MyDate) = when {
year != other.year -> year - other.year
month != other.month -> month - other.month
else -> dayOfMonth - other.dayOfMonth
}
}
Run Code Online (Sandbox Code Playgroud)
该操作符重载文档链接到从锻炼明确地说:
需要使用运算符修饰符标记重载运算符的函数.
那么这里发生了什么?为什么这段代码会编译?什么时候operator需要?
为什么在最终课程中允许受保护的成员?
这不应该是编译时错误吗?
编辑:正如人们所指出的,您可以使用默认修饰符来获得相同的包访问权限.它应该以完全相同的方式运行,因为protected只是默认的+子类,而final修饰符明确拒绝子类化,所以我认为答案不仅仅是提供相同的包访问.
所以我开始为以下代码布局单元测试:
public interface MyInterface {
void MyInterfaceMethod1();
void MyInterfaceMethod2();
}
public class MyImplementation1 implements MyInterface {
void MyInterfaceMethod1() {
// do something
}
void MyInterfaceMethod2() {
// do something else
}
void SubRoutineP() {
// other functionality specific to this implementation
}
}
public class MyImplementation2 implements MyInterface {
void MyInterfaceMethod1() {
// do a 3rd thing
}
void MyInterfaceMethod2() {
// do something completely different
}
void SubRoutineQ() {
// other functionality specific to this implementation
}
}
Run Code Online (Sandbox Code Playgroud)
有几个实现和期望更多的未来. …
我正在使用Eclipse的CheckStyle插件.
它非常适合在99%的时间内找到我不想要的东西,但是我实际上只有1%的时间打算故意违反规则,我想让CheckStyle知道它不需要关注标记警告.
示例:缺少Javadoc注释规则.大多数时候我都希望Javadoc对我的方法发表评论.但是,方法如:
public boolean isValid() {
return valid;
}
Run Code Online (Sandbox Code Playgroud)
没有人可能会过得很快.
是否有类似@SuppressWarnings注释可用于将特定的CheckStyle规则违规标记为可接受的?可能是某种特殊格式的评论?我不想禁用该规则,我只想忽略特定的违规行为.
(我知道在这种情况下我可以编写Javadoc注释,但在其他情况下修复规则违规并不是那么简单).
有谁知道Eclipse IDE中存储书签的位置?
我不得不从我的工作区中删除一个Java项目,然后使用Import Existing project选项重置一些配置设置,现在我的书签消失了.我试图了解这对我的书签有何影响,因为除了Eclipse .project和.classpath文件之外,文件系统上的所有内容都应保持不变.
java ×7
eclipse ×2
oop ×2
annotations ×1
checkstyle ×1
junit ×1
kindle ×1
kindle-kdk ×1
kotlin ×1
unit-testing ×1