如何设置Tomcat自动重定向到"www"?如果用户输入我的域名,我希望如下:
mydomain.com
他将被重定向到:www.mydomain.com
public void m1(Integer f) {
...
}
public void m1(Float f) {
...
}
public void main() {
m1(null); // error: the method m1(Integer) is ambiguous for the type Main
m1((Integer) null); // success
}
Run Code Online (Sandbox Code Playgroud)
鉴于上面的例子中,我们可以承认在某些方面是null被打出来.那么为什么要打印以下行true?当然o1,o2两者都没有价值(即null),但它们不是同一类型(Integervs Float).我首先想到false会被打印出来.
Integer i = null;
Object o1 = (Object) i;
Float f = null;
Object o2 = (Object) f;
System.out.println(o1 == o2); // prints true
// in …Run Code Online (Sandbox Code Playgroud) 我遇到泛型类型的问题:
public static class Field<T> {
private Class<? extends T> clazz;
public Field(Class<? extends T> clazz) {
this.clazz = clazz;
}
}
public static void main(String[] args) {
// 1. (warning) Iterable is a raw type. References to generic type Iterable<T> should be parameterized.
new Field<Iterable>(List.class);
// 2. (error) The constructor Main.Field<Iterable<?>>(Class<List>) is undefined.
new Field<Iterable<?>>(List.class);
// 3. (error) *Simply unpossible*
new Field<Iterable<?>>(List<?>.class);
// 4. (warning) Type safety: Unchecked cast from Class<List> to Class<? extends Iterable<?>>.
new Field<Iterable<?>>((Class<? extends Iterable<?>>) …Run Code Online (Sandbox Code Playgroud) 鉴于变量:
Object[] ab = new Object[] { "a", "b" };
Object[] cd = new Object[] { "c", "d" };
Run Code Online (Sandbox Code Playgroud)
调用以下方法时:
public static void m(Object... objects) {
System.out.println(Arrays.asList(objects));
}
Run Code Online (Sandbox Code Playgroud)
使用:
m(ab, cd);
Run Code Online (Sandbox Code Playgroud)
我得到了预期的输出:
[[Ljava.lang.Object;@3e25a5, [Ljava.lang.Object;@19821f]
Run Code Online (Sandbox Code Playgroud)
但使用时:
m(ab);
Run Code Online (Sandbox Code Playgroud)
我明白了:
[a, b]
Run Code Online (Sandbox Code Playgroud)
由于strings <- ab不strings[0] <- ab.
如何强制编译器将ab数组作为数组的第一个值strings,然后输出:
[Ljava.lang.Object;@3e25a5
Run Code Online (Sandbox Code Playgroud)
?
Boolean a, b, c, d;
Run Code Online (Sandbox Code Playgroud)
我想算一下trues的数量,每个结果都应该有自己的关联动作.也许是这样的:
int result = getResult(a, b, c, d);
switch (result) {
case 0: break;
case 1: break;
case 2: break;
case 3: break;
default: break;
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何以getResult一种漂亮的方式编写方法体?在这个例子中,我只使用了四个,但它应该可以扩展到更多的布尔值.欢迎任何其他方式继续.
public static void main(String[] args) throws Exception {
int[] a = new int[] { 1, 2, 3 };
method(a);
}
public static void method(Object o) {
if (o != null && o.getClass().isArray()) {
Object[] a = (Object[]) o;
// java.lang.ClassCastException: [I cannot be cast to [Ljava.lang.Object;
}
}
Run Code Online (Sandbox Code Playgroud)
我不应该知道什么是该参数的类型o中method.我怎么能把它投射到Object[]数组中?
instanceof 因为参数可以是任何类型的数组,所以不能成为解决方案.
PS:我已经看过几个关于SO处理数组转换的问题,但没有人(还有?)你不知道数组的类型.
可能是一个愚蠢的问题,但我还没有找到任何明确的答案.
我的服务器处理ETag缓存以获得我们所拥有的一些非常大的JSON响应,304 NOT MODIFIED如果If-None-Match标头包含与新生成的相同的散列(浅ETag),则返回空主体.
浏览器是否应该自动处理,或者异步使用API的浏览器内客户端应用需要实现一些逻辑来处理这样的响应(即如果304响应则使用缓存版本,否则创建/更新缓存版本)?
因为到目前为止,我已经手动实现了这个逻辑客户端,但我想知道我是否只是重新设计了方形轮...
换句话说,Cache-Control例如,使用标题,浏览器内的客户端应用程序不需要解析值,max-age例如检查,以某种方式存储它,设置超时等等:所有内容都由浏览器直接处理.问题是:浏览器在收到浏览器时应该采用相同的方式304吗?
以下是我到目前为止编写客户端的方法(使用AngularJS构建,在浏览器中运行):
myModule
.factory("MyRepository", ($http) => {
return {
fetch: (etag) => {
return $http.get(
"/api/endpoint",
etag ? { headers: { "If-None-Match": etag } } : undefined
);
}
};
})
.factory("MyService", (MyRepository, $q) => {
let latestEtag = null;
let latestVersion = null;
return {
fetch: () => {
return MyRepository
.fetch(latestEtag)
.then((response) => {
latestEtag = response.headers("ETag");
latestVersion = response.data; …Run Code Online (Sandbox Code Playgroud) 我从文件中读取了一个字符串,我将其拆分为 字符.例如,字符串是
1|test pattern|prefix|url|postfix
Run Code Online (Sandbox Code Playgroud)
所以拆分必须总是给我5个子串,在上面的例子中
["1", "test pattern", "prefix", "url", "postfix"]
Run Code Online (Sandbox Code Playgroud)
当这五个子串中的任何一个包含|时出现问题 字符.我会把它存储为转义\ |
1|test pattern|prefix|url \| title |postfix
Run Code Online (Sandbox Code Playgroud)
现在,你可以看到string.split('|')不会给我想要的结果.期望的结果是
["1", "test pattern", "prefix", "url \| title ", "postfix"]
Run Code Online (Sandbox Code Playgroud)
我尝试了一些正则表达式,但这些都没有给出理想的结果.
string.split(/[^\\]\|/) //["", "", "prefi", "$url \| $titl", " postfix"]
Run Code Online (Sandbox Code Playgroud)
看起来这只能用负面的回顾,但我无法让它工作
在我一直在工作的公司中,我已经看到很多使用前缀来指示变量的范围或来源,例如m对于类成员,i方法内部变量和a(或p)方法参数:
public class User {
private String mUserName;
public String setUserName(final String aUserName) {
final String iUserName = "Mr " + aUserName;
mUserName = iUserName;
}
}
Run Code Online (Sandbox Code Playgroud)
你怎么看待这件事?是推荐(或者确切地说不是)?我发现它在第一阶段非常难看,但是我使用的越多,我就越发现在使用大方法时非常方便.
请注意,我不是在谈论匈牙利符号,前缀表示类型而不是范围.
public enum MyEnum1 {
FOO(BAR), BAR(FOO);
private MyEnum1 other;
private MyEnum1(MyEnum1 other) {
this.other = other;
}
public MyEnum1 getOther() {
return other;
}
}
Run Code Online (Sandbox Code Playgroud)
MyEnum1生成错误Cannot reference a field before it is defined,这是可以理解的,因为声明顺序在这里很重要.但为什么以下编译呢?
public enum MyEnum2 {
FOO { public MyEnum2 getOther() { return BAR; } },
BAR { public MyEnum2 getOther() { return FOO; } };
public abstract MyEnum2 getOther();
}
Run Code Online (Sandbox Code Playgroud)
FOO是指定义BAR之前BAR,我错了吗?