我是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) 我正在寻找一种算法,它提供了一种生成结的图形表示的方法(2D或3D,但前者,最好是矢量图形).
在尝试自己设计一些东西之前,我想了解一些现有软件的存在,这些软件不仅可以代表它们(在内存中),还可以在一些图形表示中进行可视化(有许多).它可以是库的形式,也可以是简单的函数,甚至是伪代码算法,它试图指定如何在屏幕上正确绘制知识.
正如之前的链接所暗示的那样,在Wolfram Mathematica中有一个包,命名KnotTheory就是这样(以几乎完整的方式).但是,它不可移植,也不是免费软件和访问它的模块对我来说非常麻烦(在Java中免费实现,只是为了命名一种语言,但每种语言都很好,从可移植性和开放性的角度看是理想的) .
我已经看到许多软件可用(但大多数都是旧的,无法访问或可用).你有一些很好的分享指南吗?
更新:由于两个投票结束这个问题已经出现,我正在以更务实和明确的方式重述它:是否有算法绘制和生成结?已经实施了一些东西
更新2(用于重新打开) 图形表示可以是3D渲染对象或2D svg图形(我正在从中抽象出来,因为我期待编程语言为Processing(或相同的Mathematica本身),它为您提供绘制的基元屏幕上的曲线(样条曲线,贝塞尔曲线等)(然后将它们导出为栅格或矢量图形).算法应采用一个结参数化作为输入(即,如果我们谈论由它们的交叉属性描述的结,它们的值是什么需要),返回上面的一个图形表示(即使是2d空间中的一系列点).也就是说,任何参数化都很好,我的目的只是为了得到如何绘制结的内省,以获得一个算法,以特定的方式做到这一点,导致一个特定的表示,会很好(Mathematica的lib似乎能够在如此多的表示中绘制它).
所以在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等价物?
如何在不保存文件和计数的情况下获取程序先前在java中运行的次数.是否有一个Application类或java中的东西来检查计数
那么,请看这里:Java编程语言的代码约定 没有什么可以下载或查看.我的意思是,如果你试图下载任何东西,你会得到这个:"我们很抱歉,找不到您要求的页面." 你能帮我找到这些约定吗?我的意思是这些,而不是任何其他.这些约定可能会在Internet上的某处找到.我找不到,也许你可以.先感谢您.
我正在尝试使用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:
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) 我定义了一个可以接受任意数量参数但不需要任何参数的函数:
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)
提前致谢 :)
我目前正在使用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) 我正在制作一个应用程序来发短信给这个字符串:
??????????????
???????????????
?????????????????
???????????????????
???????????????????
?????????????
????????????
?????????????
?????????????
?????????????
?????????????
???????????????
???????????????
????????????????
????????????????
?????????????????
??????????????????
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 ×7
kotlin ×2
android ×1
arguments ×1
function ×1
javascript ×1
jersey ×1
processing ×1
sms ×1
string ×1