小编afz*_*lex的帖子

私有类数组的长度无法访问

请考虑以下代码:

class A {
    B[] arr = new B[10];

    private class B {}
}


class C {
    void fun(){
        A a = new A();
        Object arr = a.arr;
        Object len = a.arr.length;  // !! ERROR
    }
}
Run Code Online (Sandbox Code Playgroud)

正如我在代码中写的那样.a.arr.length;给出错误.

我真的明白为什么会这样.这是因为子类B是私有的.但仍然为什么会这样.在A类中,属性arr是可访问的,但为什么不是它的长度.在jls或任何地方有没有任何解释.

我只想对这种行为做出明确的解释.我知道私人事物不能在同类之外访问.但公共阵列可能是.无论是什么类型.如果外面有任何东西可以访问,那么也应该访问它的公共属性.但这里没有发生.

编辑:我发现在C#中甚至不可能创建一个私有类数组.在java中如果我们无法访问任何东西,甚至无法知道私有类数组的长度那么创建私有类数组有什么用.

java arrays

14
推荐指数
1
解决办法
1138
查看次数

如何选择列值为null的行?

考虑以下数据库表:

id      |  is_visible
________|_______________
1       |  true
2       |  false
3       |               -- i.e. null
Run Code Online (Sandbox Code Playgroud)

我想选择具有is_visible = null的所有行.我尝试了以下查询:

SELECT * FROM tab WHERE is_visible = null;     -- 0 results
SELECT * FROM tab WHERE is_visible <> true;    -- only fields with false value
SELECT * FROM tab WHERE is_visible <> false;   -- only fields with true
Run Code Online (Sandbox Code Playgroud)

我在postgresql和sql server中尝试过
如何选择具有is_visible = null的行?

sql sql-server postgresql

10
推荐指数
1
解决办法
1万
查看次数

如果在uib-tabset中使用,则值不与作用域的变量绑定

如果在uib-tabset中使用,则值不与作用域的变量绑定.在下面的示例中,我尝试$scope.message进入uib-tab内部并在其外部:

angular.module("app", ["ui.bootstrap"])
		.controller("myctrlr", ["$scope", function($scope){
            $scope.message = "my message ";
		}]);
Run Code Online (Sandbox Code Playgroud)
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.14.3/ui-bootstrap-tpls.min.js"></script>
<div ng-app="app" ng-controller="myctrlr" class="col-md-6 col-md-offset-3">
	<uib-tabset>
	    <uib-tab heading="Static title">
            <input type="text" ng-model="message" ng-change="change()" /> 
            <br />
            Inside uib-tab : {{ message }}
	  	</uib-tab>
	    <uib-tab heading="Another title">
	      I've got an HTML heading, and a select callback. Pretty cool!
	    </uib-tab>
  	</uib-tabset>
    Outside uib-tab : {{ message }}
</div>
Run Code Online (Sandbox Code Playgroud)

我声明$scope.message并尝试将其与inputuib-tab中的元素绑定.但是当我更改它的值时,更改不会反映在uib-tab之外.

jsfiddle链接

html javascript angularjs angular-ui

9
推荐指数
1
解决办法
6532
查看次数

将Integer []转换为int []的最佳方法是什么?

将Integer数组转换为int数组的最佳方法是什么?

它的简单解决方案是:

public int[] toPrimitiveInts(Integer[] ints) {
    int[] primitiveInts = new int[ints.length];
    for(int i = 0; i < ints.length; i++) {
        primitiveInts[i] = ints[i] == null ? 0 : ints[i];
    }
    return primitiveInts;
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我采用0null对象/包装器的默认值为null并且int为0这一事实的值.

这个答案显示了如何将int []转换为Integer []

但我找不到将Integer []转换为int []的简单方法.

java arrays

7
推荐指数
1
解决办法
153
查看次数

如何为具有泛型方法的功能接口创建lambda表达式

我有一个功能界面

@FunctionalInterface
interface MyInterface {
    <T> T modify(Object);
}
Run Code Online (Sandbox Code Playgroud)

我可以为这个界面创建一个匿名类

MyInterface obj = new MyInterface(){
    @Override
    <T> T modify(Object obj){
        return (T) obj
    }
}
Run Code Online (Sandbox Code Playgroud)

如何为此创建lambda表达式.

MyInterface obj -> {return (T) obj;};  // ! ERROR as T is undefined
Run Code Online (Sandbox Code Playgroud)

java generics lambda java-8

6
推荐指数
1
解决办法
1390
查看次数

docker 撰写具体的配置文件

当我尝试 docker compose down 特定配置文件时,它会停止并删除所有容器。我只想删除引用配置文件中的容器。

docker compose --profile elk down         # Let's say I have some services in elk profile
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,我只想关闭带有elk配置文件标记的服务。

docker docker-compose

5
推荐指数
1
解决办法
2464
查看次数

为什么xor对常量(字符)的操作在使用变量时的工作方式不同

看看下面的代码:

情况1 :

char a = 'x' ^ 'y';
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是当我在这里使用变量而不是常量时:

案例2:

char x = 'x';
char y = 'y';
char a = x ^ y; // Error!
Run Code Online (Sandbox Code Playgroud)

在java语言中:case 1正在工作,a的值为1,但是case 2不起作用.

在C和C++中:两种情况都有效,a的值为1

在C#中:两种情况都不起作用.

在javascript:这两种情况下都工作,这是不是一个HLL和价值出来是0.


我知道java正在将变量转换为整数来进行二进制操作,但是为什么它在情况1中工作而不是在情况2中,为什么在C#中不起作用?为什么在javascript的情况下值不同.

更新 当我使变量最终比它在java中工作时,但仍然不在C#中

final char x = 'x';
final char y = 'y';
char a = x ^ y;
Run Code Online (Sandbox Code Playgroud)

但是我仍然不明白为什么常量工作但是当使用变量时它们不是.为什么其他高级编程语言不会发生同样的情况.
我认为这是一个基本的操作,应该在所有具有相同行为的编程语言中工作.

注意要在javascript中测试所有上述情况,我在所有情况下都将'char'替换为'var'并且它们正在工作.

c c# c++ java expression

3
推荐指数
1
解决办法
448
查看次数

无法将泛型方法的功能接口转换为lambda表达式

无法将泛型方法的功能接口转换为lambda表达式.
以下代码正在运行.它没有lambda表达式,即使用匿名类.

public interface Pro{
    public <T> void callee(T t);
}

public void fun(Pro obj){}


public void implement() {
    fun(new Pro() {
        @Override
        public <Integer> void callee(Integer t){}
    });
}
Run Code Online (Sandbox Code Playgroud)

我无法理解如何使用lambda表达式而不是匿名类.
在自己尝试之后,我使用了netbeans中显示的提示.我使用所示的灯泡来做到这一点.

在此输入图像描述

这就是我得到的,一个错误.

public void implement() {
    fun((Integer t) -> {
    });
}
Run Code Online (Sandbox Code Playgroud)

它显示错误.这里使用的正确lambda表达式是什么?
这是错误:

one\LambdaScopeTest.java:18: error: incompatible types: invalid functional descriptor for lambda expression
    fun((Integer t) -> {
        ^
method <T>(T)void in interface Pro is generic
where T is a type-variable:
     T extends Object declared in method <T>callee(T)
Note: …
Run Code Online (Sandbox Code Playgroud)

java generics lambda

3
推荐指数
1
解决办法
2390
查看次数

如何使用mingw从另一个文件中存在的main方法运行文件中存在的方法

我已经在netbeans上安装了mingw用于C编程.
然后我创建了一个文件"Myfile.c",我在其中创建了一个方法callme().
但是这个文件不包含main方法.
我想callme()从另一个包含main方法的文件中调用.

myfile.c文件

#include <stdio.h>
void callme() {
    printf("I am called");
}
Run Code Online (Sandbox Code Playgroud)

EntryFile.c

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {
    // How to call callme() from here OR use this method anyhow.
    return (EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)

出于某些原因,我不想创建主方法Myfile.c.

编辑

myfile.c文件

#include <stdio.h>
void callme();
void callme() {
    printf("I am called");
}
Run Code Online (Sandbox Code Playgroud)

EntryFile.c

#include <stdio.h>

int main(int argc, char** argv) {
    callme();
}
Run Code Online (Sandbox Code Playgroud)

错误

"/C/MinGW/MSYS/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make.exe[1]: Entering …
Run Code Online (Sandbox Code Playgroud)

c netbeans mingw

2
推荐指数
1
解决办法
53
查看次数

关于结果的java ArrayList

    ArrayList<ArrayList<Integer>> result = new ArrayList<>();
    ArrayList<Integer> temp = new ArrayList<>();
    temp.add(1);
    temp.add(2);
    result.add(temp);
    temp.remove(temp.size() - 1);
    temp.add(1, 3);
    result.add(new ArrayList<>(temp));
Run Code Online (Sandbox Code Playgroud)

结果是[[1,3],[1,3]],但我认为它应该是[[1,2],[1,3]],为什么?

java arraylist

1
推荐指数
1
解决办法
149
查看次数

防止JFrame显示任何图标

我不希望我的jframe在任务栏中显示任何图标.基本上如果我们不指定任何IconImage内容,那么它会显示默认图标.但在我的程序中,我不希望显示任何图标.

 setUndecorated(true);
 setSize(208, 58);
 setImageIcon(null); // same result
Run Code Online (Sandbox Code Playgroud)

如果我将使用透明图像Icon,即使这样,系统也会显示一个用于图标的半透明矩形.

在此输入图像描述

我的问题很简单.我认为我不需要为此编码.如果有任何方法可以做到这一点,请告诉我.
可以做到的一种方法是使用JWindowWindow,但使用它有许多缺点,我不想这样做.

java icons swing jframe

0
推荐指数
1
解决办法
150
查看次数

为什么这段代码打印1,-1

这是在线测试中向我询问的代码.考虑这段代码.

int i = -1, j = -1;
(i=0)&&(j=0);
(i++)&&(++j);
printf("%d, %d\n", i, j);
Run Code Online (Sandbox Code Playgroud)

上面的代码将打印出来

1, -1
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么输出会出现1, -1而不是出现1, 1.

c

-2
推荐指数
1
解决办法
91
查看次数

#define SQR(x)(x*x)的答案不正确

以下程序正在打印 49

#include <stdio.h> 
#define SQR(x) (x*x) 
void main(void) { 
    int x, y; x = 5; 
    y = SQR(++x); 
    printf("y is %d\n", y); 
}
Run Code Online (Sandbox Code Playgroud)

我不明白我错过了什么.
这里就是我理解它是如何可能是工作
SQR(++x), ++x将被评估为6之后x*x36应退还.
因此y = 36
,答案是49

c

-5
推荐指数
1
解决办法
345
查看次数