假设我有一些像Function这样的函数接口和一些不同类的方法,我可以为它们提供方法引用,例如:
class A {
public int getPrimitive() { return 0; }
public Integer getBoxed() { return 0; }
public static int getStaticPrimitive(A a) { return 1; }
}
Function<A, Integer> primitive = A::getPrimitive;
Function<A, Integer> boxed = A::getBoxed;
Function<A, Integer> staticPrimitive = A::getStaticPrimitive;
Run Code Online (Sandbox Code Playgroud)
我如何通过反射获取从A类转换为Function接口实例的所有可能的方法引用?
到目前为止,这个问题与评论中提到的任何问题都不重复,但多亏了Holger在评论中提到的两个问题,我已经设法做了我需要的事情:
class Test {
public static void main(String[] args) throws Throwable {
HashMap<String, Function<A, Integer>> map = new HashMap<>();
Collection<MethodType> supportedTypes = Arrays.asList(
MethodType.methodType(int.class, A.class),
MethodType.methodType(Integer.class, A.class)
);
MethodType inT = MethodType.methodType(Function.class);
MethodHandles.Lookup …Run Code Online (Sandbox Code Playgroud) 我需要创建一个新的进程,将标准错误流重定向到某个文件.正在创建子进程的代码没有可用的控制台,因此有些情况下GetStdHandle(any)将返回0.由于某种原因,子进程将尝试复制其所有标准IO句柄(子进程的源代码不可用)所以它的所有句柄都应该是有效的.
因此,我需要以与从控制台运行的方式相同的方式运行该过程:
someproc <nul >nul 2>err
Run Code Online (Sandbox Code Playgroud)
我看到了一些方法:1.创建两对管道.这可能是一个很好的解决方案,但对我来说太复杂了.2.使用CreateFile("nul",...)函数调用打开"nul"文件.此调用没有创建文件,但这看起来很奇怪.3.使用INVALID_HANDLE_VALUE.这也有效,但我认为另一个子进程可能存在不同的问题.
我相信有更好的方法.
对于代码:
int i;
Run Code Online (Sandbox Code Playgroud)
gcc预处理器输出:
int i;
Run Code Online (Sandbox Code Playgroud)
如何强制它保留空白?
我用以下命令调用预处理器:gcc -E somefile.c命令.
尝试使用其他 DYLD_ 属性进行试验时,我发现 jvm 正在使用属性进行操作,并且在执行过程中会忽略这些属性。
我的 Java 测试:
class Env {
public static void main(String... args) {
System.getenv().entrySet().stream().forEach(e -> System.out.println(e.getKey() + " = " + e.getValue()));
}
}
Run Code Online (Sandbox Code Playgroud)
调用:
$ export DYLD_PRINT_LIBRARIES=1
$ export MY_PRINT_LIBRARIES=2
$ javac Env.java && java Env|grep PRINT
MY_PRINT_LIBRARIES = 2
$
Run Code Online (Sandbox Code Playgroud)
另一方面,我的 C 测试:
#include <stdio.h>
int main(int argc, char **argv, char **envp) {
while (*envp) {
printf("%s\n", *envp);
envp++;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
调用:
$ gcc env.c && ./a.out|grep PRINT
dyld: loaded: /Users/okutane/test/java/./a.out
dyld: …Run Code Online (Sandbox Code Playgroud) 以下代码是否在某些JSP页面中添加了XSS漏洞?
<!-- <%=paramName%>=<%=request.getParameter(paramName)%><BR> -->
Run Code Online (Sandbox Code Playgroud)
它看起来像一个"剩余的调试",绝对应该从代码中删除,但它有多危险?
我想将我的String对象转换为其1个大小的子串(不是字符串)的Enumerable,我怎样才能在Ruby中有效地执行此操作?