为了学习一些使用JAVA-Genric的基本操作,我尝试创建一个泛型类,该类接受一个数字,并对它执行一些操作,并返回值但其抛出错误。
父类:
public class HelloWorld{
public static void main(String []args){
MathsExec<Integer> my_obj = new MathsExec<Integer>();
int rst = my_obj.doAddition(100);
System.out.println("Solution
似乎您通常没有指定类型参数就实现了java.lang.Comparable接口。
public abstract class Area implements Comparable {
@Override
public int compareTo(Object other) {
if (other instanceof Area)
return new Double(getArea()).compareTo(other.getArea());
return -1; // or something else
}
class Bouncy<T> extends Throwable {
}
// Error: the generic class Bouncy<T> may not subclass java.lang.Throwable
为什么Java不支持通用Throwable?
我意识到类型擦除会使某些事情变得复杂,但是很明显,Java已经通过了很多操作,那么为什么不把它再推一步,允许泛型Throwable,并对潜在的问题进行全面的编译时检查呢?
我觉得那种擦除式的论点很弱。目前,我们无法做到:
void process(List<String> lis
当我试图调用远程接口,也就是部署在其他服务器(prewlsapp2)中时,我对这段代码有一些问题。这是我的客户:
Hashtable<String, String> pro = new Hashtable<String, String>();
//Properties pro = new Properties();
pro.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
我一直在阅读Java中的通配符,但我不知道如何在接口方法声明的实现中解析Collection的通配符类型。从技术上讲,您可以通过检查Collection中的一个对象来发现该类型,但这将不允许您解析集合中的类型,如果集合为空,它将失败。
public interface SomeInterface {
void addAThing(Object thing);
void addAListOfThings(Collection< ?> things);
}
public class SomeInterfaceImplementation implements Some
我正在与请求工厂和仿制药做斗争。在下面的代码中,代理方法与实体方法完全匹配,但我得到了日志跟踪:
java.lang.NullPointerException: null
at com.google.web.bindery.autobean.vm.impl.MethodPropertyContext.traverse(MethodPropertyContext.java:102) ~[gwt-servlet-2.6.0.jar:na]
at com.google.web.bindery.autobean.vm.impl.MethodPropertyContext.accept(
在Java中,您可以编写一个将集合中的每个List反转的静态方法:
public static void reverseAll(Collection<List<?>> lists) {
for (List<?> list : lists)
Collections.reverse(list);
}
当我试图在C#中执行类似的操作时,我遇到了困难,因为接口IList<T>随着T的变化而变化,不能与Reverse方法共享公共接口。我发现您可以使用dynamic类型来完成这个任务:
public static void Rever
我正在尝试用java做以下事情:
public class ClassName<E> extends E
然而,这样做,我得到了一个:
error: unexpected type
是不是简单地说,java不能做到这一点?-如果是这样的话,我将如何实现这一效果?它在C++中完美地工作,使用模板,类似于:
template<typename E>
class ClassName: public E
我真正想要实现的是,能够以这种方式将类链接在一起,以达到java中多重继承的效果。
public class CollectionsOutput {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
//A.display(2,3);
}
}
interface B
{
}
class A implements B
{
}
class C <T & B>
{
}
抱歉标题含糊不清。
我正在阅读这本书,我认为在Go中实现示例是很好的学习练习,但是这本书使用Java作为它的语言来描述代码。
第一章中有一章将讨论如何设置一些核心数据类型/容器样式的类,以便稍后重用,但我很难将这些数据类型插入到Go设置中,主要是因为这些数据类型似乎很喜欢Java泛型的使用。
例如,我编写了以下代码
package bag
type T interface{}
type Bag []T
func (a *Bag) Add(t T) {
*a = append(*a, t)
}
func (a *Bag) IsEmpty() bool {
return le
我尝试将Spring Data jpa与泛型一起使用,但在运行单元测试时会处理相同的异常。以下是例外情况:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tn.moussi.PostRepositorytest': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException
我们可以在java中创建泛型接口的数组吗?
interface Sample<T>{}
在其他班级
Sample<T> s[] = new Sample[2] ; // for this it shows warning
Sample<T> s[] = new Sample<T>[2];// for this it shows error
我指的是这个。如果边界之一是类,则必须首先指定。我觉得无论什么顺序都应该允许。
为什么java会有这样的限制?这背后有什么具体原因吗?
多重界
前面的示例说明了具有单个绑定的类型参数的使用,但类型参数可以具有多个边界:具有多个边界的类型变量是绑定中列出的所有类型的子类型。如果其中一个边界是类,则必须首先指定它。例如:
Class A { /* ... */ }
interface B { /* ... */ }
interface C { /* ...
*/ }
class D <T extends A & B & C> { /* ... */ }
我看过一些类似这样的代码,无法理解它的意义:
public class ClassA{
public <T> void getContactName(ContactList<T> contactList){
//do something
}
}
基本上我不理解这一点。该类编译时没有任何错误。我认为ClassA也应该成为带有参数'T‘的泛型。
谢谢
我知道Java能够创建for容器。不需要指定类型的泛型整数。这在c#中是可能的吗?
public interface Interface1<T>{
void ProcessModel(T source);
}
public class Implement : Interface1<ModelClass>{
.....implementation
}
我需要实例化一些像这样的容器
public List<Interface1> temp = new List<Interface1>();
而不是这个
public List<
有人能向我解释一下这种行为吗?
注:T从未在SomeThingGeneric中使用
public static class SomeThingGeneric<T> {
public List<String> getSomeList() {
return null;
}
}
final SomeThingGeneric<Object> someThingGenericObject = new SomeThingGeneric<Object>();
final SomeThing
我还没有在现有的问题中找到我的用例,所以我开始了。我有一个抽象类,它有这样的泛型:
public abstract class aParameter<T>
{
private T _parameter;
public T Parameter
{
get { return _parameter;}
}
...
}
然后我就有了这样的“类型”类:
public class IntParameter : aParameter<Int32>
{
public IntParameter(Int32 value)
下面的代码中,我声明了两个方法,它们的返回类型是有界参数,但一个基于接口,另一个基于类。在test()方法中,对于有界参数从预期的Class扩展的方法,将返回类型赋给String失败,但当有界参数基于接口时,编译器不会抛出错误。你能解释一下为什么会发生这种情况吗?
import java.io.FileInputStream;
import java.util.function.Predicate;
public class Dummy
{
<T extends Predicate<String>> T getBoundedByInterface()
我想做以下几件事:
public class A
{
}
public class B
{
}
在这个项目的某个地方,我想要这个:
public class C
{
public T func<T>(T obj) [where T can be either of class A or class B]
{
obj.x = 100;
return obj;
}
}
我一直在努力:
public T func<T>(T obj) where T: A, B
但这给了我:
类型类约束'B‘必须在任何其他约
为什么在第二个示例中没有编译错误,但是在第一个示例中有下面的编译错误?
SomeConcreateClass.java:1: ISomeBaseInterface cannot be inherited with different arguments: <java.lang.Object> and <>
public class SomeConcreateClass
^
1 error
在第二个示例中,惟一的差异类SomeDerivedClass不是参数化的。
Example1:
我是否正确地理解了在这个例子中
public class SomeConc
我在Java方面很新。我不知道这个<T extends Comparable<T>>。我的意思是,为什么T在扩展之前就扩展了?这不足以写extends Comparable<T>吗?为什么javadoc中的extends而不是implements是一个接口,对吗?据我所知,Comparable比较了两个对象吗?
public class TopNPrinter<T extends Comparable<T>> {
private int N;
private String header;
public Top
可以在C#中编译下面的代码吗?我确实用Java编译了类似的代码。
public interface IInterface
{
...
}
public class Class1 : IInterface
{
...
}
public abstract class Base<T> where T : IInterface
{
...
}
public class Class2<T> : Base<T> where T : IInterface
{
...
}
.
.
.
public SomeMethod()
{