我正在使用继承,我注意到有三种方法可以获得相同的结果.有什么不同?
function Animal(){
}
Animal.prototype.doThat = function() {
document.write("Doing that");
}
function Bird(){
}
// This makes doThat() visible
Bird.prototype = Object.create(Animal.prototype); // Solution 1
// You can also do:
// Bird.prototype = new Animal(); // Solution 2
// Or:
// Bird.prototype = Animal.prototype; // Solution 3
var myVar = new Bird();
myVar.doThat();
Run Code Online (Sandbox Code Playgroud)
如你所见,我提出了三个解决方案.它们中的每一个都使方法doThat()可见.
如果我评论所有这些,确实存在错误.
如果我只解除其中一个程序的作用.
那么......三种解决方案之间真正区别的是什么?
这是一个 html 元标记示例:
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="private">
Run Code Online (Sandbox Code Playgroud)
它设置在 html 元标记上以启用缓存。
我用 Tomcat 和 Firebig 试过了。服务器发送 html 元标记中的信息。但是在 http 标头响应中没有关于缓存的信息。
但是,http 标头响应中的类似内容是有效的:
Cache-Control: private
Run Code Online (Sandbox Code Playgroud)
所以我想知道:信息是什么时候写在http响应中的?
有两种设置相同信息的方式(元标记和http响应行)有什么需要?
我应该在连接之前关闭声明吗?而声明前的结果集?或者它是否完全相反?
Connection conn = null;
Statement st = null;
Resultset rs = null;
try {
// Do stuff
} catch (SQLException e) {
// Do stuff
}
finally {
if (rs != null) rs.close();
if (st != null) st.close();
if (conn != null) conn.close();
}
Run Code Online (Sandbox Code Playgroud)
要么
Connection conn = null;
Statement st = null;
Resultset rs = null;
try {
// Do stuff
} catch (SQLException e) {
// Do stuff
}
finally {
if (conn != null) conn.close();
if …Run Code Online (Sandbox Code Playgroud) 在线Java文档中,我发现了以下示例:
public void addName(String name) {
synchronized(this) {
lastName = name;
nameCount++;
}
nameList.add(name);
}
Run Code Online (Sandbox Code Playgroud)
他们说:
如果没有synchronized语句,则必须有一个单独的,不同步的方法,仅用于调用
nameList.add.
有人明白他们的意思吗?
来源可以在这里找到.
他们为什么添加AutoCloseable和更改Closeable如下:
public interface Closeable extends AutoCloseable {
public void close() throws IOException;
}
Run Code Online (Sandbox Code Playgroud)
而不是仅Closeable进行如下更改(不添加AutoCloseable):
public interface Closeable {
public void close() throws Exception;
}
Run Code Online (Sandbox Code Playgroud)
第二种解决方案的优点是:1)生成的异常数没有限制(请参阅参考资料IOException)2)Closeable本身无需扩展就可以在try-with-resources中使用AutoCloseable
3)这不会破坏现有代码,因为实现可以仅具有比接口中定义的异常更受限制的异常4)没有过度设计
是否有任何理由为什么他们决定采用第一个解决方案而不是第二个解决方案?
我正在尝试使用 maven 创建一个 jar 文件,但生成的 jar 是空的,并且只包含 META-INF 文件夹。它不包含类。
这是我的pom
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.project</groupId>
<artifactId>my-commons</artifactId>
<version>1.0</version>
<name>my-commons</name>
<properties>
<java-version>1.7</java-version>
</properties>
<dependencies>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
怎么了?
当我有一个潜在的空输入时...总是检查它是否更好:
public void doSomething(String str) {
if (str == null)
throw new NullPointerException();
processData(str);
}
Run Code Online (Sandbox Code Playgroud)
或传递无效数据,并等待"processData()"抛出nullPointerException:
public void doSomething(String str) {
processData(str);
}
Run Code Online (Sandbox Code Playgroud) 在C++中,我可以使用shell脚本来编写所有编译指令,从而获得相同的结果.所以我的问题是:
使用makefile有什么好的理由吗?
你有任何例子来证明这一点吗?
如果我有以下静态
private static String STATURDAY = "Saturday";
Run Code Online (Sandbox Code Playgroud)
我可以用一种可读的方式使用它:
myMethod(SATURDAY);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,对于类型安全性,枚举更好.但是,如果我使用Enum,它的可读性会降低:
myMethod(Week.SATURDAY.toString());
Run Code Online (Sandbox Code Playgroud)
有没有办法以可读的方式使用枚举?
假设我想为这样的方法创建一个单元测试:
public Car map(CarReq request) {
Car car = new Car();
car.setPrice(carReq.getPrice());
car.setColour(carReq.getColour());
car.setType(carReq.getType());
// Other 20 lines like these
return car;
}
Run Code Online (Sandbox Code Playgroud)
我可以模拟carRequest并告诉每个方法应该返回什么。但这就像没有测试任何东西一样,因为所有方法所做的都是从carReq获取值。
我可以创建一个测试carReq对象(不带模拟),并检查是否将相同的值复制到输出Car对象中。但这是很多工作,对吗?
有没有更聪明的方法?