是否存在定义和使用泛型定义的简写方法,而不必继续重复特定的通用描述,以便如果有更改,我不必更改所有定义/用法,尽管代码库可能是这样的:
Typedef myGenDef = < Object1, Object2 >;
HashMap< myGenDef > hm = new HashMap< myGenDef >();
for (Entry< myGenDef > ent : hm..entrySet())
{
.
.
.
}
Run Code Online (Sandbox Code Playgroud) 好的只是为了清酒知识,我尝试了下面的案例(假设A类和B类在同一个包中)
ClassA的
public class ClassA {
public static void main(String[] args) {
System.out.println("A");
}
}
Run Code Online (Sandbox Code Playgroud)
ClassB的
public class ClassB extends ClassA {
public static void main(String[] args) {
System.out.println("B");
}
}
Run Code Online (Sandbox Code Playgroud)
在ClassB
它上面执行它将B
在classB下面的变化之后产生现在的输出
ClassB的
public class ClassB extends ClassA {
//blank body
}
Run Code Online (Sandbox Code Playgroud)
如果我编译并运行terminal
它给我的输出A
完全令人惊讶,因为它应该给出,NoSuchMethodError
因为没有主要的方法是他们如此善意地解释奇怪的行为?
注意:许多答案包含Override
单词请使用,hiding
因为我们无法覆盖java中的静态方法.
public interface MyFunc<T> {
boolean func(T v1, T v2);
}
Run Code Online (Sandbox Code Playgroud)
public class HighTemp {
private int hTemp;
HighTemp(){
}
public HighTemp(int ht) {
this.hTemp = ht;
}
boolean sameTemp(HighTemp ht2){
return hTemp == ht2.hTemp;
}
boolean lessThanTemp(HighTemp ht2){
return hTemp < ht2.hTemp;
}
}
Run Code Online (Sandbox Code Playgroud)
class InstMethWithObjRef {
static <T> int counter(T[] vals, MyFunc<T> f, T v){
int count = 0;
for (int i = 0; i < vals.length; i++) {
if(f.func(vals[i], v)) count++;
}
return count;
}
public static void …
Run Code Online (Sandbox Code Playgroud) 为什么以下代码没有警告?
public void some(Object a){
Map<?, ?> map = **(Map<?,?>)a**; //converting unknown object to map
}
Run Code Online (Sandbox Code Playgroud)
我预计RHS会有一个未经检查的警告.
虽然此代码有警告:
public void some(Object a){
Map<Object, Object> map = **(Map<Object,Object>)a**;
//converting unknown object to Map<Object,Object>
}
Run Code Online (Sandbox Code Playgroud)
此外,对于以下情况,没有警告:
String str = (String) request.getAttribute("asd") //returns Object
Run Code Online (Sandbox Code Playgroud)
这是否意味着仿制药带来了未经检查的警告?在Java中引入泛型之前没有这样的警告?
我正在尝试创建一个使用jira进行身份验证的应用程序.我正在使用Jira Rest api.在文档中,它说使用相同的公钥和消费者密钥来创建文档中给出的应用程序链接.这很好,我可以创建访问令牌.但在提到Java代码这个,我不知道应该怎样为PRIVATE_KEY给出.我尝试了两种方法 -
length too long
.我尝试了2048,1024,512,256和128位.一切都给出了同样的错误.申请链接:
消费者关键:硬编码消费者
消费者名称:硬编码消费者
公钥:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxZDzGUGk6rElyPm0iOua0lWg84nOlhQN1gmTFTIu5WFyQFHZF6OA4HX7xATttQZ6N21yKMakuNdRvEudyN/coUqe89r3Ae + rkEIn4tCxGpJWX205xVF3Cgsn8ICj6dLUFQPiWXouoZ7HG0sPKhCLXXOvUXmekivtyx4bxVFD9Zy4SQ7IHTx0V0pZYGc6r1gF0LqRmGVQDaQSbivigH4mlVwoAO9Tfccf + V00hYuSvntU + B1ZygMw2rAFLezJmnftTxPuehqWu9xS5NVsPsWgBL7LOi3oY8lhzOYjbMKDWM6zUtpOmWJA52cVJW6zwxCxE28/592IARxlJcq14tjwYwIDAQAB
申请链接:
消费者关键:硬编码消费者
消费者名称:硬编码消费者
公钥:MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC0YjCwIfYoprq/FQO6lb3asXrx LlJFuCvtinTF5p0GxvQGu5O3gYytUvtC2JlYzypSRjVxwxrsuRcP3e641SdASwfr mzyvIgP08N4S0IFzEURkV1wp/IpH7kH41EtbmUmrXSwfNZsnQRE5SYSOhh + LcK2w yQkdgcMv11l4KoBkcwIDAQAB
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.simontuffs.onejar.Boot.run(Boot.java:340)
at com.simontuffs.onejar.Boot.main(Boot.java:166)
Caused by: java.lang.RuntimeException: Failed to obtain request token
at com.atlassian.oauth.client.example.AtlassianOAuthClient.getRequestToken(AtlassianOAuthClient.java:66)
at com.atlassian.oauth.client.example.JIRAOAuthClient.main(JIRAOAuthClient.java:52)
... 6 more
Caused by: net.oauth.OAuthProblemException: signature_invalid
at net.oauth.client.OAuthResponseMessage.toOAuthProblemException(OAuthResponseMessage.java:83)
at net.oauth.client.OAuthClient.invoke(OAuthClient.java:306)
at net.oauth.client.OAuthClient.invoke(OAuthClient.java:260)
at net.oauth.client.OAuthClient.getRequestTokenResponse(OAuthClient.java:190)
at …
Run Code Online (Sandbox Code Playgroud) 字符串容易受到密码值的影响.我注意到Vaadin PasswordField
操纵密码为String
.
以下是默认构造函数PasswordField
,
public PasswordField() {
setValue("");
}
Run Code Online (Sandbox Code Playgroud)
我的问题:
PasswordField
在Vaadin 使用是否安全?如何根据执行maven的VM是32位还是64位JVM来启用或禁用maven配置文件?
我试过这个:
<activation>
<os>
<arch>x86</arch>
</os>
</activation>
Run Code Online (Sandbox Code Playgroud)
或者amd64
分别检测32/64位VM,但是在64位Windows上运行的32位VM上,这会激活64位配置文件.
这是一个很好的java实践(就时间而言在内存和计算效率方面)来关联类本身中的静态对象列表.
package collection;
/**
* Created by ANJANEY on 5/28/2014.
*/
import java.util.*;
class Student1
{
int rollId;
String name;
static List<Student1> studentList=new ArrayList<Student1>();
Student1(int rollId,String name)
{
this.rollId=rollId;
this.name=name;
studentList.add(this);
}
}
public class A {
public static void main(String aaaa[])
{
new Student1(1,"Anjaney");
new Student1(2,"Prerak");
Iterator<Student1> itr=Student1.studentList.iterator();
while(itr.hasNext())
{
Student1 st=itr.next();
System.out.println("Roll = "+st.rollId+" Name = "+st.name);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正面临一种奇怪的行为java.util.Calendar
.
问题是当我Calendar#getTime()
在中间添加一个方法调用时,我得到的结果是正确的,但是当我直接得到Dates
一周而没有调用Calendar#getTime()
它时,它指的是下周而不是当前周.
请考虑以下代码段:
public class GetDatesOfWeek {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
Calendar cal = Calendar.getInstance();
cal.set(1991, Calendar.DECEMBER, 11);
//System.out.println(cal.getTime());//LINE NO : 14
for(int i = Calendar.SUNDAY; i <= Calendar.SATURDAY; i++) {
cal.set(Calendar.DAY_OF_WEEK, i);
Date date = cal.getTime();
System.out.println(sdf.format(date));
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我取消注释该行时,14
我得到以下输出:
Wed Dec 11 07:38:06 IST 1991
08-12-1991
09-12-1991
10-12-1991
11-12-1991
12-12-1991
13-12-1991
14-12-1991
Run Code Online (Sandbox Code Playgroud)
但是当我评论该行并执行代码时,我得到了输出.
15-12-1991 …
Run Code Online (Sandbox Code Playgroud) 考虑以下情况,
interface IFace1 {
default void printHello() {
System.out.println("IFace1");
}
}
interface IFace2 {
void printHello();
}
public class Test implements IFace1, IFace2 {
public static void main(String[] args) {
Test test = new Test();
test.printHello();
IFace1 iface1 = new Test();
iface1.printHello();
IFace2 iface2 = new Test();
iface2.printHello();
}
@Override
public void printHello() {
System.out.println("Test");
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我得到了非常期待的输出.
Test
Test
Test
Run Code Online (Sandbox Code Playgroud)
我一直在阅读有关Java-8
默认方法的内容,特别是有关扩展包含默认方法的接口的内容
2 nd bullet:重新声明默认方法,使其成为抽象方法.
在上面的例子中,我有这有相同名称的默认方法两个接口,当我实现了这两个我才能够达到执行printHello
的Test
是指IFace2
.
我对此几乎没有疑问, …