小编Gre*_*pff的帖子

为什么要将新的ArrayList分配给List变量?

我是java的新手,当我浏览网上的许多例子的代码时,我看到人们在几乎所有情况下都ArrayList只是声明变量List.

List<String> myList = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

我不明白这样做是否有一些特定的优势.为什么它不能成为一个ArrayList本身,就像这样:

ArrayList<String> myList = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

java

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

以程序方式生成结(并将其可视化)

我正在寻找一种算法,它提供了一种生成结的图形表示的方法(2D或3D,但前者,最好是矢量图形).

我已经看到了很多关于结理论的链接,从准时引用一般信息.

在尝试自己设计一些东西之前,我想了解一些现有软件的存在,这些软件不仅可以代表它们(在内存中),还可以在一些图形表示中进行可视化(有许多).它可以是库的形式,也可以是简单的函数,甚至是伪代码算法,它试图指定如何在屏幕上正确绘制知识.

正如之前的链接所暗示的那样,在Wolfram Mathematica中有一个包,命名KnotTheory就是这样(以几乎完整的方式).但是,它不可移植,也不是免费软件和访问它的模块对我来说非常麻烦(在Java中免费实现,只是为了命名一种语言,但每种语言都很好,从可移植性和开放性的角度看是理想的) .

我已经看到许多软件可用(但大多数都是旧的,无法访问或可用).你有一些很好的分享指南吗?

更新:由于两个投票结束这个问题已经出现,我正在以更务实和明确的方式重述它:是否有算法绘制和生成结?已经实施了一些东西

更新2(用于重新打开) 图形表示可以是3D渲染对象或2D svg图形(我正在从中抽象出来,因为我期待编程语言为Processing(或相同的Mathematica本身),它为您提供绘制的基元屏幕上的曲线(样条曲线,贝塞尔曲线等)(然后将它们导出为栅格或矢量图形).算法应采用一个结参数化作为输入(即,如果我们谈论由它们的交叉属性描述的结,它们的值是什么需要),返回上面的一个图形表示(即使是2d空间中的一系列点).也就是说,任何参数化都很好,我的目的只是为了得到如何绘制结的内省,以获得一个算法,以特定的方式做到这一点,导致一个特定的表示,会很好(Mathematica的lib似乎能够在如此多的表示中绘制它).

java processing wolfram-mathematica image-processing

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

Kotlin相当于三元运算符

所以在java中我们有三元运算符(?),它有时很容易通过if-else内联计算一些值.例如:

myAdapter.setAdapterItems(
            textToSearch.length == 0
            ? noteList
            : noteList.sublist(0, length-5)
)
Run Code Online (Sandbox Code Playgroud)

我知道kotlin中的等价物是:

myAdapter.setAdapterItems(
                if(textToSearch.length == 0)
                    noteList
                else
                    noteList.sublist(0, length-5) 
)
Run Code Online (Sandbox Code Playgroud)

但我曾经习惯于喜欢Java中的三元运算符,用于短表达式条件,以及将值传递给方法时.有没有Kotlin等价物?

ternary-operator kotlin

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

计数编号已执行的次数

如何在不保存文件和计数的情况下获取程序先前在java中运行的次数.是否有一个Application类或java中的东西来检查计数

java

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

Java代码约定消失了(在哪里可以找到)

那么,请看这里:Java编程语言的代码约定 没有什么可以下载或查看.我的意思是,如果你试图下载任何东西,你会得到这个:"我们很抱歉,找不到您要求的页面." 你能帮我找到这些约定吗?我的意思是这些,而不是任何其他.这些约定可能会在Internet上的某处找到.我找不到,也许你可以.先感谢您.

java

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

无法使用Jersey客户端过滤器覆盖响应标头

我正在尝试使用Jersey客户端API来使用第三方REST服务.我计划使用自动POJO反序列化从JSON响应转到Java对象.

不幸的是,第三方服务使用内容类型返回响应"text/javascript".我的Jersey客户端无法理解这应该被视为JSON对象并且无法反序列化该对象.

我写了一个简单的泽西服务器应用程序来验证通过更改内容类型"text/javascript",以"application/json"使deserialisation工作.

有了这些信息,我开始使用Jersey客户端过滤器来修改响应头.该代码来自该问题的作者的评论.事实上,问题似乎与我的完全相同 - 但是回答者错误地回答了问题,并展示了如何修改请求标头(而不是响应标头).原作者能够使用答案来创建他的解决方案,但是,似乎他所声明的解决方案无法工作.

过滤器代码是:

client.addFilter(new ClientFilter() {
  @Override public ClientResponse handle(ClientRequest cr) 
      throws ClientHandlerException {
    ClientResponse response = getNext().handle(cr); 
    response.getHeaders().putSingle(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON); 
    return response;
  }
});
Run Code Online (Sandbox Code Playgroud)

但是,当执行时,UnsupportedOperationException会引发:

Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableCollection.clear(Collections.java:1035)
at com.sun.jersey.core.util.StringKeyIgnoreCaseMultivaluedMap.putSingle(StringKeyIgnoreCaseMultivaluedMap.java:78)
at com.sun.jersey.core.util.StringKeyIgnoreCaseMultivaluedMap.putSingle(StringKeyIgnoreCaseMultivaluedMap.java:56)
at App$1.handle(App.java:49)
at com.sun.jersey.api.client.Client.handle(Client.java:648)
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:680)
at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:507)
at App.main(App.java:63)
Run Code Online (Sandbox Code Playgroud)

返回的标题似乎包含在不可修改的集合中.

然后我尝试将所有标头复制到新集合中,但是我无法看到将标头映射设置回响应.

最后,我想也许我可以创建一个ClientResponse包含我修改过的标题的新内容.但是,构造函数ClientResponse具有此签名:

public ClientResponse(int status, 
                      InBoundHeaders headers, …
Run Code Online (Sandbox Code Playgroud)

java jersey

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

Kotlin相当于Optional.map和方法引用

Java

考虑以下Java:

private void example() {
  Optional<String> foo = ...
  Optional<String> bar = 
      foo.map(this::transform1)
          .map(this::transform2)
}

private String transform1(String s) {
  return s + "!";
}

private String transform2(String s) {
  return "@" + s;
}
Run Code Online (Sandbox Code Playgroud)

请注意,transform方法接受非可选值.

Kotlin是否有内置机制在使用其可空/非nullabe类型时实现相同的功能?

第一次尝试

我设法通过以下方式实现了这种效果:

fun <A, B> nullMap(a: A?, mapper: (a: A) -> B?): B? =
  if (a != null) mapper.invoke(a) else null

fun example() {
  val foo: String? = "Space cookies"
  val bar1: String? = nullMap(foo, Example::transform1)
  val bar2: String? …
Run Code Online (Sandbox Code Playgroud)

kotlin

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

将变量参数传递给函数--javascript

我定义了一个可以接受任意数量参数但不需要任何参数的函数:

function MyFunction() { //can take 0, 1, 1000, 10000, n arguments
//function code
}
Run Code Online (Sandbox Code Playgroud)

现在我想编写另一个函数,每次使用可变数量的参数调用MyFunction:

function Caller(n) {
var simple_var = "abc";
MyFunction() //how can i pass simple_var to MyFunction n times?
} 
Run Code Online (Sandbox Code Playgroud)

提前致谢 :)

javascript arguments function

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

Java应用程序无法启动

我目前正在使用Ubuntu 11.10和java SE 1.6.0_26.我正在尝试运行一个非常简单的"Hello World"应用程序.我将java文件HelloWorld.java放在Home文件夹中.我使用命令编译它javac HelloWorld.java.我认为它的工作原因是它没有显示任何编译错误而且HelloWorld.class创建了一个.

当我输入命令时java HelloWorld出现此错误:

Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
Caused by: java.lang.ClassNotFoundException: HelloWorld
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: HelloWorld.  Program will exit.
Run Code Online (Sandbox Code Playgroud)

BTW,这是我的java代码:

public class HelloWorld {
    public static void main (String args[]) {
        System.out.println("Hello World!!!");
    }
}
Run Code Online (Sandbox Code Playgroud)

java

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

为什么我不能发送一个怪异可怕的骨架短信?

我正在制作一个应用程序来发短信给这个字符串:

    ??????????????
    ???????????????
    ?????????????????
    ???????????????????
    ???????????????????
    ?????????????
    ????????????
    ?????????????
    ?????????????
    ?????????????
    ?????????????
    ???????????????
    ???????????????
    ????????????????
    ????????????????
    ?????????????????
    ??????????????????
Run Code Online (Sandbox Code Playgroud)

此方法发送文本:

protected void sendSMSMessage(String phoneNo, String msg){
    try {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(phoneNo,null,msg,null,null);
        Toast.makeText(
                getApplicationContext(),
                "SMS sent",
                Toast.LENGTH_LONG
        ).show();
        Log.v("sendSMSMessage",msg);
    } catch (Exception e) {
        Toast.makeText(
                getApplicationContext(),
                "Failed to send. Try again.",
                Toast.LENGTH_LONG
        ).show();
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果msg是"测试",并且我跑了sendSMSMessage,几分钟后我会在手机上收到字符串"test".如果msg是怪异的骨架,方法就行,但是我没有得到文本,并且控制台没有显示任何错误 - 弹出"短信发送"吐司以显示正确执行的代码.

当我手动给自己发出怪异的骨架文字时,我得到了文字,但是它上面都散布着"(X/6)"(当然,"x"是一个数字).

是不可能发送骨架短信?

如果是这样,我应该将其制作成图片并将代码发送为彩信吗?

java string sms android

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