可能重复:
为什么变量在case语句中不是本地的?
范围块中定义的变量不能在其外部使用.例如,以下代码段无效:
{
int anothervar = 4;
}
{
System.out.println(anothervar);
}
Run Code Online (Sandbox Code Playgroud)
但它看起来像一个case块不会创建分开的范围.
switch (mode) {
case ONE:
dosomething();
return;
case TWO:
int[] someints = new int[] { 2, 3, 5, 7 };
SomeObject obj = new SomeObject();
return;
case THREE:
someints = new int[] { 1, 4, 6, 8, 9 };
obj = new SomeObject();
return;
}
Run Code Online (Sandbox Code Playgroud)
为什么我不必someints在case THREE'块' 内声明?
假设mode = THREE,那么someints永远不会达到变量声明,因为声明的case TWO地方someints被跳过了.或者不是吗?它在内部如何运作? …
[Windows 10] 我在自定义目录中安装了“Microsoft VS Code(用户设置)”,每当我尝试更新它时,都会显示:
然后这个
Log Info
Dec 23 11:42:40.673 INFO Starting: C:\Users\jeremy\AppData\Local\Programs\Microsoft VS Code\Code.exe, false
Dec 23 11:42:40.674 ERRO Bad arguments: Code path doesn't seem to exist: C:\Users\jeremy\AppData\Local\Programs\Microsoft VS Code\Code.exe
Run Code Online (Sandbox Code Playgroud)
如何更改路径以将其指向存在“Code.exe”的正确目录?
我有一堂课:
class Generic<T> {
List<List<T>> getList() {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
当我Generic用通配符和调用getList方法声明 a时,以下赋值是非法的。
Generic<? extends Number> tt = null;
List<List<? extends Number>> list = tt.getList(); // this line gives compile error
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎很奇怪,因为根据 的声明Generic,很自然地创建 aGeneric<T>并获得 a List<List<T>>when call getList。
事实上,它需要我像这样写作业:
List<? extends List<? extends Number>> list = tt.getList(); // this one is correct
Run Code Online (Sandbox Code Playgroud)
我想知道为什么第一个是非法的,为什么第二个是合法的。
我给出的例子只是一些示例代码来说明问题,您不必关心它们的含义。
错误信息:
不兼容的类型:
必需:List<java.util.List<? extends java.lang.Number>>
找到:List<java.util.List<capture<? extends java.lang.Number>>>
假设我需要一些DerivedBuilder扩展一些BaseBuilder.基础构建器有一些方法foo(返回BaseBuilder).派生构建器有方法bar.方法bar应方法之后被调用foo.为了做到这一点,我可以像这样覆盖foo方法DerivedBuilder:
@Override
public DerivedBuilder foo() {
super.foo();
return this;
}
Run Code Online (Sandbox Code Playgroud)
问题是BaseBuilder有很多方法foo,我必须覆盖它们中的每一个.我不想这样做,所以我尝试使用泛型:
public class BaseBuilder<T extends BaseBuilder> {
...
public T foo() {
...
return (T)this;
}
}
public class DerivedBuilder<T extends DerivedBuilder> extends BaseBuilder<T> {
public T bar() {
...
return (T)this;
}
}
Run Code Online (Sandbox Code Playgroud)
但问题是我还是不能写
new DerivedBuilder<DerivedBuilder>()
.foo()
.bar()
Run Code Online (Sandbox Code Playgroud)
即使T这是DerivedBuilder.为了不覆盖很多功能,我该怎么办?
通常,在大型项目的上下文中,将现有的,无处不在的接口用于功能接口是否安全?
例如,给定一个现有的接口和类:
public interface Interface {
public double calculateSomething(double x);
public void doSomething();
}
Run Code Online (Sandbox Code Playgroud)
由...实施
class InterfaceImplementer implements Interface {
public double calculateSomething(double x) {
return 2 * x;
}
public void doSomething() {
// insert specific behavior here
}
}
Run Code Online (Sandbox Code Playgroud)
我可以通过定义除一个方法之外的所有方法来安全地更改界面:
public interface Interface {
public double calculateSomething(double x);
default void doSomething() {
// insert some default behavior here
}
}
Run Code Online (Sandbox Code Playgroud)
这样我就可以将对象定义为
Interface object = new InterfaceImplementer() {
@Override
public double calculateSomething(double x) {
return 2 * x;
} …Run Code Online (Sandbox Code Playgroud) 我有一个代码片段,我希望使用像lambdas/streams等Java 8功能更简洁可读.
基本上,有一个项目列表,每个项目都有一个错误列表.如果至少有一个项目至少有一个错误,则需要返回"失败".如果没有任何错误的项目,请返回"成功".
Optional<List<Item>> optionalItemList = Optional.ofNullable(message.getItems());
if (optionalItemList.isPresent())
for (Item item : optionalItemList.get()) {
Optional<List<Error>> optionalErrorList = Optional.ofNullable((item.getErrors()));
if(optionalErrorList.isPresent())
if (!optionalErrorList.get().isEmpty()) {
return "failure";
}
}
return "success";
Run Code Online (Sandbox Code Playgroud) 我想在COBOL中读取STDIN(又名SYSIN)的行.现在我只想把它们打印出来,以便我知道我有它们.从我正在阅读的所有内容看起来应该可行:
IDENTIFICATION DIVISION.
PROGRAM-ID. APP.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT SYSIN ASSIGN TO DA-S-SYSIN ORGANIZATION LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD SYSIN.
01 ln PIC X(255).
88 EOF VALUE HIGH-VALUES.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
OPEN INPUT SYSIN
READ SYSIN
AT END SET EOF TO TRUE
END-READ
PERFORM UNTIL EOF
DISPLAY ln
READ SYSIN
AT END SET EOF TO TRUE
END-READ
END-PERFORM
CLOSE SYSIN
STOP RUN.
Run Code Online (Sandbox Code Playgroud)
编译(使用open-cobol和cobc -x),但运行它我得到:
libcob: File does not exist (STATUS = 35) File : '' …Run Code Online (Sandbox Code Playgroud) 我在我的Android应用程序中使用以下代码:
Thread d = new Thread(new Runnable() {
@Override
public void run() {
SmackConfiguration.setDefaultPacketReplyTimeout(10000);
XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
.setUsernameAndPassword("admin", "password")
.setServiceName("192.168.0.200")
.setHost("192.168.0.200")
.setPort(5223).setSecurityMode(SecurityMode.ifpossible)
.build();
AbstractXMPPConnection conn2 = new XMPPTCPConnection(config);
try {
conn2.connect();
conn2.login();
Presence presence = new Presence(Presence.Type.unavailable);
presence.setStatus("Gone fishing");
// Send the packet (assume we have an XMPPConnection instance called "con").
conn2.sendStanza(presence);
} catch (SmackException | IOException | XMPPException e) {
e.printStackTrace();
Log.d("TAG", e.toString());
}
ChatManager chatmanager = ChatManager.getInstanceFor(conn2);
Chat newChat = chatmanager.createChat("harsh@192.168.0.200");
try {
newChat.sendMessage("Howdy!");
}
catch (NotConnectedException …Run Code Online (Sandbox Code Playgroud) 这里有趣的问题,想知道是否有人遇到过它.
我正在构建一个Android应用程序,它有一些特殊字符作为文本(主要是日文字符),我们的设计师需要一些战略性的软回报,因为较小的设备的宽度限制,文本需要包装.
问题是因为文本基本上是日语,所以单词之间没有空格.
我知道我们可以使用\u200b零宽度空间产生这样的字符串:
ABCDEF\u200bghijklmnop
当有足够的空间时,出现这样的情况:
abcdefghijklmnop
如果它需要换行,就像这样:
abcdef
ghijklmnop
问题是,如果不使用标准英文字符,我们使用日语字符似乎不起作用.我们根本没有软线.无论我们把它放在哪里,它总是会在空间不足的地方突破\u200b
ヘルプヘルプ\ u200bヘルプヘルプ
结果是:
ルヘプルヘプルヘプヘ
ルプ
有没有人以前处理过这个问题或有任何关于如何解决这个问题的想法?