如果有一个(可能是静态的)方法/字段的完整列表存储JVM的运行时信息,我一直想知道很长一段时间.一个不完整的示例列表:
有没有人有链接或什么?
编辑:我没有那么愚蠢,没有检查系统和运行时的文档:P我只是想知道是否有其他类,其中存储类似的方法来确定您正在运行的机器的状态.
假设我有一个方法"mix",它采用两个可能不同类型的T和S列表,并返回一个包含两者元素的List.对于类型安全,我想指定返回的List是R类型,其中R是T和S共有的超类型.例如:
List<Number> foo = mix(
Arrays.asList<Integer>(1, 2, 3),
Arrays.asList<Double>(1.0, 2.0, 3.0)
);
Run Code Online (Sandbox Code Playgroud)
为了指定这个,我可以将方法声明为
static <R, T extends R, S extends R> List<R> mix(List<T> ts, List<S> ss)
Run Code Online (Sandbox Code Playgroud)
但是如果我想在类上创建mix一个实例方法而不是静态List2<T>呢?
<R, T extends R, S extends R> List<R> mix ...
Run Code Online (Sandbox Code Playgroud)
阴影<T>在实例上List2,所以没有好处.
<R, T extends S&T, S extends R> List<R> mix ...
Run Code Online (Sandbox Code Playgroud)
解决了阴影问题,但编译器不接受
<R super T, S extends R> List<R> mix ...
Run Code Online (Sandbox Code Playgroud)
被编译器拒绝,因为下限通配符不能存储在命名变量中(仅用于? super X表达式)
我可以将参数移动到类本身,例如List2<R, T extends R, S extends R>,但类型信息实际上没有业务存在于实例级别,因为它仅用于一个方法调用,并且您每次需要时都必须重新构建对象在不同的参数上调用该方法. …
似乎为了在Racket中使用多个返回值,我必须使用define-values或将它们收集到列表中(call-with-values (thunk (values-expr)) list).在后一种情况下,为什么有人会选择返回多个值而不是列表,如果只是必须将它们收集到列表中呢?此外,这些都非常冗长,并且难以适应大多数代码.我觉得我必须误解一些关于多重回报价值的基本信息.就此而言,如何编写接受多个返回值的过程?
在课堂上完成作业,我遇到了这个(请注意循环的条件)
// This one works.
for (int k = 0; k + negwords[j].length() < comments[i].length(); k++) {
if (comments[i].substr(k, negwords[j].length()) == negwords[j]) {
negativeScore++;
}
}
//*/
/*/ This one doesn't: It fails with an out-of-bounds index.
for (int k = 0; k < comments[i].length() - negwords[j].length(); k++) {
if (comments[i].substr(k, negwords[j].length()) == negwords[j]) {
negativeScore++;
}
}
//*/
Run Code Online (Sandbox Code Playgroud)
为什么第一个有效但第二个无效?它是关于操作顺序,bool强制到int,操作员关联性还是OBOE的东西?
我有一个简单的模板结构,将字符串与值相关联
template<typename T> struct Field
{
std::string name; T self;
}
Run Code Online (Sandbox Code Playgroud)
我有一个函数,我想接受任何类型的1个或多个字段,而字段可能是不同类型的,所以我使用的是std::initializer_list因为C++,据我所知,缺少类型的可变参数,无法确定可变参数的大小,并且必须至少有一个其他参数来确定从哪里开始.
问题是我不知道如何告诉它接受可能属于不同类型的字段.在Java中,我只会使用foo(Field<?> bar, Field<?>... baz),但C++缺少类型化的可变参数和通配符.我唯一的另一个想法是制作类型的参数
std::initializer_list<Field<void*>>,但这似乎是一个糟糕的解决方案......有更好的方法吗?
大多数时候,我唯一看到的块块就是这样的东西
FileInputStream f;
try{
f= new FileInputStream("sample.txt");
//something that uses f and sometimes throws an exception
}
catch(IOException ex){
/* Handle it somehow */
}
finally{
f.close();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果f的范围以封闭块结束,为什么我们需要在finally中关闭它?
IntelliJ 有一些这样的设施和选项。例如,我希望它的格式如下:
@Override public
void foo()
{ ... }
Run Code Online (Sandbox Code Playgroud)
更好的是能够像这样缩进注释和可见性
@Override public
void foo()
{ ... }
Run Code Online (Sandbox Code Playgroud)
但我不想贪心。
Eclipse 中是否存在这样的格式化选项?
这个标题有点棘手......当我编写一个界面时,通常最好的做法是尽可能地返回最具体的界面,或者至少?
例如,假设
interface List2<T> extends List<T>
{
List<T> getRange(int startIndex, int endIndex);
}
Run Code Online (Sandbox Code Playgroud)
改变它会更好吗?
interface List2<T> extends List<T>
{
List2<T> getRange(int startIndex, int endIndex);
}
Run Code Online (Sandbox Code Playgroud)
这样调用者可以调用getRange他们的结果,同时仍然以多态方式匹配List?
我有类似的东西:
interface Foo<T> {
//... lines [0,45]...
/*line 46*/ <R, X super T&R> List<X> weave(R value);
//...
}
Run Code Online (Sandbox Code Playgroud)
但是IntelliJ正在报道:
有什么问题?我不允许将名字绑定到下限吗?或者我只允许R&X在上限中使用表达式?
把它改成
interface Foo<T> {
//... lines [0,45]...
/*line 46*/ <R> List<? super T&R> weave(R value);
//...
}
Run Code Online (Sandbox Code Playgroud)
产量
在Racket中,如果您尝试hash-ref使用哈希不包含的密钥,例如
(define a-hash #hash((1 . "a")
(2 . "b")))
(hash-ref a-hash 3)
Run Code Online (Sandbox Code Playgroud)
提出exn:fail:contract来了.
...\Racket\collect\racket\private\more-scheme.rkt:263:2:hash-ref:找不到密钥的值
不幸的是,exn:fail:contract无益广泛.如果您尝试将值应用为过程,则会获得相同类型的异常
(with-handlers ((exn:fail? print))
(10 11))
Run Code Online (Sandbox Code Playgroud)
(exn:fail:contract"application:not a procedure; \n期望一个可以应用于参数的过程\n给定:10 \n参数......:\n 11"#)
有没有办法改变的默认值hash-ref的failure-result使用它的代码么?我可以进入我的Racket安装并在那里进行更改吗?这看起来很糟糕和危险.我有什么选择?我可以解析异常消息,但是那些hacky和容易出错的东西.
由于在下面的代码中,R扩展了Appendable,我不应该能够返回一个可以预期R的Appendable吗?
/**
* Produces an R, to which a T has been semantically appended,
* whatever that may mean for the given type.
*/
interface Appendable <R, T>
{
/**
* Append is not expected to modify this Appendable,
* but rather to return an R which is the result
* of the append.
*/
R append(T t);
}
interface PluralAppendable <R extends Appendable<R, T>, T>
extends Appendable<R, T>
{
default R append(T... els)
{
// Easier to debug than …Run Code Online (Sandbox Code Playgroud) 我想要做的是给出一个参数const int &i,i以数组的形式返回二进制表示的位bool(并且返回也会很棒)...有谁知道怎么做?